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


是否有办法保持颜色,即使一天是选定的?我知道有一种方法可以通过委托为QTableView做到这一点,但是对于QCalendarWidget,我找不到这样的东西。有什么想法吗?谢谢您抽时间见我。
发布于 2015-04-15 08:05:14
您可以访问日历部件的内部QTableView对象,如下所示:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
view->setItemDelegate(new MySuperCalendarDelegate);
}然后,您可以使用自定义委托来设置适当的背景和前景色。
此外,您还可以检查my previous answer上的QCalendarWidget样式。
发布于 2016-08-24 14:52:27
我知道这已经一年多了,如果我正确理解这个问题,我想我找到了一个更好的解决办法。在我的示例中,每次选择日期时,我都会将日期设置为黄色,执行以下操作:
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}")这对我很有用。
https://stackoverflow.com/questions/29643063
复制相似问题