我知道没有对QSS样式的支持,但是有谁知道改变1和2 of QCalendarWidget QCalendarWidget的颜色的变通方法吗?( 1部分为浅蓝色,2部分为白色)

谢谢!
发布于 2013-02-06 21:38:04
我已经检查了QCalendarWidget source code并找到了解决方案。
QCalendarWidget内部有一个用于显示日期的模型和视图。QCalendarModel有一个formatForCell(int, int)函数,它为给定的单元格返回QTextCharFormat。返回的格式是合并QCalendarView调色板数据的结果,当天的格式(周六和周日以红色显示)和当前日期的格式,可以使用QCalendarWidget::setDateTextFormat函数设置。
实际上,一个项目的背景是:
format.setBackground(pal.brush(cg, header ? QPalette::AlternateBase : QPalette::Base));当当前单元格是标题单元格(在您的示例中为第1节)时,
pal is a QCalendarView's palette;cg is a color group;header is QCalendarView因此,您需要做的就是将自定义调色板设置为内部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);
}在我的示例中,第一部分将是红色的,第二部分将是绿色的。此外,您可以为您的调色板的每个color group设置颜色,以获得您喜欢的小部件时,它是活动的,非活动的等。
发布于 2017-03-10 15:38:53
区域"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 -来自qcalendarwidget.cpp中d->m_view->setObjectName(QLatin1String("qt_calendar_calendarview"));的对象名称
https://stackoverflow.com/questions/14668344
复制相似问题