C++ QCalendarWidget选择颜色
我有一个C++ QCalendarWidget选择颜色,c++,qt,calendar,selection,C++,Qt,Calendar,Selection,我有一个QCalendarWidget,一个月的某些日子是彩色的(例如假期是红色的)。当我选择一个有颜色的日子时,选择会清除颜色,我看不到它的原始颜色。但是当我取消那天的选择时,颜色又回来了。请看图片 即使选择了一天,也有办法保持颜色吗?我知道有一种方法可以为委托的QTableView实现这一点,但我在QCalendarWidget中找不到类似的方法。有什么想法吗?感谢您抽出时间。您可以访问日历小部件的内部QTableView对象,如下所示: QCalendarWidget *c = new
QCalendarWidget
,一个月的某些日子是彩色的(例如假期是红色的)。当我选择一个有颜色的日子时,选择会清除颜色,我看不到它的原始颜色。但是当我取消那天的选择时,颜色又回来了。请看图片
即使选择了一天,也有办法保持颜色吗?我知道有一种方法可以为委托的
QTableView
实现这一点,但我在QCalendarWidget
中找不到类似的方法。有什么想法吗?感谢您抽出时间。您可以访问日历小部件的内部QTableView
对象,如下所示:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
view->setItemDelegate(new MySuperCalendarDelegate);
}
setStyleSheet("QTableView{selection-background-color: yellow}")
QCalendarWidget*c=新的QCalendarWidget;
QTableView*view=c->findChild(“qt_calendar_calendarview”);
如果(视图)
{
view->setItemDelegate(新建MySuperCalendarDelegate);
}
然后,您可以使用自定义代理来设置适当的背景和前景颜色
您还可以检查
QCalendarWidget
样式设置。您可以访问日历小部件的内部QTableView
对象,如下所示:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
view->setItemDelegate(new MySuperCalendarDelegate);
}
setStyleSheet("QTableView{selection-background-color: yellow}")
QCalendarWidget*c=新的QCalendarWidget;
QTableView*view=c->findChild(“qt_calendar_calendarview”);
如果(视图)
{
view->setItemDelegate(新建MySuperCalendarDelegate);
}
然后,您可以使用自定义代理来设置适当的背景和前景颜色
您也可以查看
QCalendarWidget
样式设置。我知道已经一年多了,如果我正确理解了这个问题,我想我找到了更好的解决方案。在我的情况下,每次选择日期时,我都会执行以下操作将日期设置为黄色:
QTextCharFormat fmt;
fmt.setBackground(Qt::yellow);
m_ui->calender->setDateTextFormat(date, fmt);
setStyleSheet("QTableView{selection-background-color: yellow}")
就在那时,我还设置了QCalenderWidget
的样式表,如下所示:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
view->setItemDelegate(new MySuperCalendarDelegate);
}
setStyleSheet("QTableView{selection-background-color: yellow}")
如果需要取消选择,我会将日期颜色设置为原始颜色,即白色,并执行以下操作:
QTextCharFormat fmt;
fmt.setBackground(Qt::yellow);
m_ui->calender->setDateTextFormat(date, fmt);
setStyleSheet("QTableView{selection-background-color: yellow}")
这对我来说非常有用。我知道已经一年多了,如果我正确理解了这个问题,我想我找到了更好的解决办法。在我的情况下,每次选择日期时,我都会执行以下操作将日期设置为黄色:
QTextCharFormat fmt;
fmt.setBackground(Qt::yellow);
m_ui->calender->setDateTextFormat(date, fmt);
setStyleSheet("QTableView{selection-background-color: yellow}")
就在那时,我还设置了QCalenderWidget
的样式表,如下所示:
QCalendarWidget *c = new QCalendarWidget;
QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview");
if (view)
{
view->setItemDelegate(new MySuperCalendarDelegate);
}
setStyleSheet("QTableView{selection-background-color: yellow}")
如果需要取消选择,我会将日期颜色设置为原始颜色,即白色,并执行以下操作:
QTextCharFormat fmt;
fmt.setBackground(Qt::yellow);
m_ui->calender->setDateTextFormat(date, fmt);
setStyleSheet("QTableView{selection-background-color: yellow}")
这对我很有用