我知道有没有用于支持QCalendarWidget
QSS
造型,但没有人知道一些解决方法改变截面的颜色1
和2
中的QCalendarWidget
? (浅蓝色为第1
和白色部分2
)
谢谢!
我知道有没有用于支持QCalendarWidget
QSS
造型,但没有人知道一些解决方法改变截面的颜色1
和2
中的QCalendarWidget
? (浅蓝色为第1
和白色部分2
)
谢谢!
我已经研究QCalendarWidget
的源代码 ,并找到了解决办法。
QCalendarWidget
内部具有模型和显示天的图。 QCalendarModel
具有formatForCell(int, int)
它返回功能QTextCharFormat
对于给定的小区。 返回格式是合并的结果QCalendarView
,对于当前日期的格式(星期六和星期日以红色显示)的调色板数据和当前日期的格式,其可以使用被设置QCalendarWidget::setDateTextFormat
功能。
实际上是一个项目的背景是:
format.setBackground(pal.brush(cg, header ? QPalette::AlternateBase : QPalette::Base));
pal
是QCalendarView
的调色板; cg
是一个色组 ; header
在当前小区是一个标题单元(第1部分在你的例子)为真 因此,所有你需要的是你的自定义调色板设置为内部QCalendarView
。 在源代码中我们可以发现, QCalendarView
对象有一个名为“qt_calendar_calendarview”,我们可以使用:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
QPalette pal = view->palette();
pal.setColor(QPalette::Base, Qt::red);
pal.setColor(QPalette::AlternateBase, Qt::green);
view->setPalette(pal);
}
在我的例子部分1将红色和第2节将是绿色的。 此外,您可以设置每个颜色的色组的调色板,你得到你喜欢当它活跃,不活跃等小部件
区域“1”的自定义:
QTextCharFormat format;
format.setForeground(QBrush(Qt::blue));
format.setBackground(QBrush(Qt::red);
ui->calendarWidget->setHeaderTextFormat(format);
区 “2” QSS CSS:
QCalendarWidget QAbstractItemView
{
background-color: rgb(192,192,192); /* цвет фона текущего месяца */
selection-background-color: yellow; /* цвет фона выбранного дня */
selection-color: black; /* цвет текста выбранного дня */
}
要么
#qt_calendar_calendarview
{
background-color: rgb(192,192,192); /* цвет фона текущего месяца */
selection-background-color: yellow; /* цвет фона выбранного дня */
selection-color: black; /* цвет текста выбранного дня */
}
其中#qt_calendar_calendarview
-从对象的名称d->m_view->setObjectName(QLatin1String("qt_calendar_calendarview"));
在qcalendarwidget.cpp