我有一个QCalendarWidget
,有些日子是彩色的(例如假期是红色的)。当我选择一个有色的日子时,选择会清除颜色,我看不到它的原始颜色。但是当我取消选择那一天 - 颜色又回来了。请参见图片。
即使选择了一天,有没有办法保持颜色?我知道有一种方法可以为代理人QTableView
执行此操作,但我无法为QCalendarWidget
找到类似的内容。有任何想法吗?谢谢你的时间。
答案 0 :(得分:3)
您可以访问日历窗口小部件的内部QTableView
对象,如下所示:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
view->setItemDelegate(new MySuperCalendarDelegate);
}
然后您可以使用自定义委托来设置正确的背景和前景色。
另外,您可以在QCalendarWidget
样式上查看my previous answer。
答案 1 :(得分:2)
我知道这已经超过一年,如果我正确地理解了这个问题,我想我找到了一个更好的解决方案。在我的情况下,每次选择日期时,我都会将日期设置为黄色,执行以下操作:
QTextCharFormat fmt;
fmt.setBackground(Qt::yellow);
m_ui->calender->setDateTextFormat(date, fmt);
那时我也设置QCalenderWidget
的样式表,如下所示:
setStyleSheet("QTableView{selection-background-color: yellow}")
如果我需要取消选择,我会将日期颜色设置为原始颜色,该颜色为白色,并执行以下操作:
setStyleSheet("QTableView{selection-background-color: yellow}")
这对我很有用。