首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QCalendarWidget选择颜色

QCalendarWidget选择颜色
EN

Stack Overflow用户
提问于 2015-04-15 06:31:09
回答 2查看 3.4K关注 0票数 1

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

是否有办法保持颜色,即使一天是选定的?我知道有一种方法可以通过委托为QTableView做到这一点,但是对于QCalendarWidget,我找不到这样的东西。有什么想法吗?谢谢您抽时间见我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-15 08:05:14

您可以访问日历部件的内部QTableView对象,如下所示:

代码语言:javascript
复制
QCalendarWidget *c = new QCalendarWidget;

QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
    view->setItemDelegate(new MySuperCalendarDelegate);
}

然后,您可以使用自定义委托来设置适当的背景和前景色。

此外,您还可以检查my previous answer上的QCalendarWidget样式。

票数 3
EN

Stack Overflow用户

发布于 2016-08-24 14:52:27

我知道这已经一年多了,如果我正确理解这个问题,我想我找到了一个更好的解决办法。在我的示例中,每次选择日期时,我都会将日期设置为黄色,执行以下操作:

代码语言:javascript
复制
QTextCharFormat fmt;
fmt.setBackground(Qt::yellow);
m_ui->calender->setDateTextFormat(date, fmt);

在那一次,我还设置了QCalenderWidget的样式表,如下所示:

代码语言:javascript
复制
setStyleSheet("QTableView{selection-background-color: yellow}")

如果需要取消选择,则将日期颜色设置为原始颜色(白色),并执行以下操作:

代码语言:javascript
复制
setStyleSheet("QTableView{selection-background-color: yellow}")

这对我很有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29643063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档