2015-04-15 215 views
1

我有一個QCalendarWidget和一個月的幾天是有顏色的(例如假期是紅色的)。當我選擇一個有顏色的日子時,選擇會清除顏色,而我看不到它的原始顏色。但是當我取消選擇那一天 - 顏色又回來了。請看照片。QCalendarWidget選擇顏色

enter image description here

enter image description here

有沒有辦法讓顏色,即使每天選擇?我知道有代表QTableView與代表有關的方法,但我找不到QCalendarWidget這樣的內容。有任何想法嗎?感謝您的時間。

回答

3

你可以訪問自己的日曆控件的內部QTableView對象是這樣的:

QCalendarWidget *c = new QCalendarWidget; 

QTableView *view = c->findChild<QTableView*>("qt_calendar_calendarview"); 
if (view) 
{ 
    view->setItemDelegate(new MySuperCalendarDelegate); 
} 

然後你可以使用一個自定義的委託,將設置適當的背景色和前景色。

你也可以檢查my previous answerQCalendarWidget樣式。

2

我知道這是一年多了,如果我正確地理解了這個問題,我想我找到了一個更好的解決方案。在我的情況下,每一個日期被選定的時候,我設定的日期以黃色執行以下操作:

QTextCharFormat fmt; 
fmt.setBackground(Qt::yellow); 
m_ui->calender->setDateTextFormat(date, fmt); 

和很長的時間我還設置了QCalenderWidget這樣的樣式表:

setStyleSheet("QTableView{selection-background-color: yellow}") 

如果我需要去選擇,我設置的日期顏色,原來,這是白色的,也做到以下幾點:

setStyleSheet("QTableView{selection-background-color: yellow}") 

這對我的偉大工程。