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