2014-09-26 87 views
1

我想自定义QCalendarWidget,我无法更改禁用状态的周末颜色。这是它的外观现在:更改已禁用QCalendarWidget周末颜色

enter image description here

我想变为灰色,红色。我知道你可以设置周末的颜色:

QTextCharFormat weekendFormat; 
weekendFormat.setForeground(QBrush(Qt::green, Qt::SolidPattern)); 
m_ui->calendarWidget->setWeekdayTextFormat(Qt::Saturday, weekendFormat); 
m_ui->calendarWidget->setWeekdayTextFormat(Qt::Sunday, weekendFormat); 

但这并不影响禁用状态。我如何影响残疾人状态并为周末设置不同的禁用颜色?

谢谢!

+0

我使用Qt 4.6.2和你的代码工作正常,我。 – hank 2014-09-30 14:38:02

+0

@hank该代码更改* enabled *状态的颜色。红色的颜色是否也因*禁用*状态而改变? – 2014-09-30 20:30:52

+0

是的,新颜色也适用于残疾人物品。 – hank 2014-10-01 04:56:59

回答

1

如果你想获得启用和禁用状态不同的颜色,你也可以继承,并重新实现改变事件处理程序:

void MyCalendar::changeEvent(QEvent *event) 
{ 
    QCalendarWidget::changeEvent(event); 
    if (event->type() == QEvent::EnabledChange) 
    { 
     QColor color; 

     if (isEnabled()) 
     { 
      color = Qt::blue; 
     } 
     else 
     { 
      color = Qt::yellow; 
     } 

     QTextCharFormat weekendFormat; 
     weekendFormat.setForeground(QBrush(color, Qt::SolidPattern)); 
     setWeekdayTextFormat(Qt::Saturday, weekendFormat); 
     setWeekdayTextFormat(Qt::Sunday, weekendFormat); 
    } 
} 
+0

是的,我认为没有重新实现'QCalendarWidget'是不可能的......所以这是解决方案 – 2014-10-01 11:10:31