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

+0

@hank 코드는 * enabled * 상태의 색상을 변경합니다. 빨강 색이 비활성화 * 상태에서도 변경됩니까? –

+0

예, 새로운 색상이 사용 중지 된 항목에도 적용됩니다. – hank

답변

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'을 다시 구현하지 않고서는 가질 수 없다고 생각합니다. 그래서 이것이 해결책입니다 –