Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QCalendarWidget选择颜色_C++_Qt_Calendar_Selection - Fatal编程技术网

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}")
这对我很有用