2014-09-26 86 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