QCalendarWidget选择颜色

时间:2015-04-15 06:31:10

标签: c++ qt calendar selection

我有一个QCalendarWidget,有些日子是彩色的(例如假期是红色的)。当我选择一个有色的日子时,选择会清除颜色,我看不到它的原始颜色。但是当我取消选择那一天 - 颜色又回来了。请参见图片。

enter image description here

enter image description here

即使选择了一天,有没有办法保持颜色?我知道有一种方法可以为代理人QTableView执行此操作,但我无法为QCalendarWidget找到类似的内容。有任何想法吗?谢谢你的时间。

2 个答案:

答案 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}")

这对我很有用。