我知道有沒有支持QCalendarWidget
QSS
造型,但沒有人知道一些解決方法改變部分1
和QCalendarWidget
的2
的顏色? (淡藍色的部分1
和白色部分2
)Qt的QCalendarWidget QSS造型
謝謝!
我知道有沒有支持QCalendarWidget
QSS
造型,但沒有人知道一些解決方法改變部分1
和QCalendarWidget
的2
的顏色? (淡藍色的部分1
和白色部分2
)Qt的QCalendarWidget QSS造型
謝謝!
我檢查了QCalendarWidget
source code並找到了解決辦法。
QCalendarWidget
內部有一個模型和一個視圖來顯示天。 QCalendarModel
有一個formatForCell(int, int)
函數,該函數返回給定單元格的QTextCharFormat
。返回格式是合併QCalendarView
調色板數據的結果,當天的格式(星期六和星期日以紅色顯示)以及當前日期的格式,可以使用QCalendarWidget::setDateTextFormat
函數進行設置。
實際上是一個項目的背景是:
format.setBackground(pal.brush(cg, header ? QPalette::AlternateBase : QPalette::Base));
pal
是QCalendarView
的調色板;cg
是color group;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節將是綠色的。 此外,您可以設置顏色,爲你的每color group調色板,讓你喜歡當它活躍的小部件,不活動等
區「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; /* цвет текста выбранного дня */
}
,wher e #qt_calendar_calendarview
- 對象的名稱從d->m_view->setObjectName(QLatin1String("qt_calendar_calendarview"));
在qcalendarwidget.cpp
太棒了!非常感謝你! –