2011-07-14 65 views
3

我目前使用Eclipse 3.5.2和Qt Jambi的4.7.2的變化水平標題背景顏色在Ubuntu 11.04納蒂獨角鯨QCalendarWidget

我有,目前擴展QCalendarWidget類。 我正在嘗試使用樣式表來設置我的日曆小部件的樣式。現在,我使用QAbstractItemView爲背景着色,但它只改變其中包含日期的單元格的背景顏色。無論我做什麼,包含星期幾名稱的水平標題段都保持白色。有沒有辦法改變使用樣式表這個頭的背景顏色?

任何幫助,將不勝感激。

謝謝。

+0

我想知道這甚至有可能嗎?經過近一個小時的研究,我最好的猜測是記住日期顯示在一個QTableWidget上(我相信),並且你想爲它編輯QHeaderView(特別是paintSection方法)。希望有人可以來買,並在這方面多說一些。 – ssell

+0

我想你最好是要求Ct/cpp解決方案;我懷疑Jambi的實現會有所不同,如果它不同,那麼戳我...然後我會看看它是否可以修復:) – Smar

回答

2

我假設您正在嘗試使用.qss文件並使用該文件設置樣式表。

開發人員沒有完全實現QCalendarWidget的外部樣式表的使用,因此您必須對其進行一些修改。

我會建議你加一個常數,你正在使用類似的.qss文件:

String color = ""; 
try { 
    URL qssFile = getClass().getResource("*PATHNAME*"); 
    Scanner scanner = new Scanner(qssFile.openStream()); 
    String nextLine; 
    try { 
     while (scanner.hasNextLine()){ 
     nextLine = scanner.nextLine(); 
     if (nextLine.contains("BACKGROUND_COLOR:")) { 
      color = nextLine.substring(nextLine.indexOf("BACKGROUND_COLOR:") + 17); 
     } 
    } 
    finally{ 
     scanner.close(); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

@cons BACKGROUND_COLOR: cyan

然後你可以從你的代碼讀取該文件

代碼中的17指的是BACKGROUND_COLOR的長度:所以我們可以得到它後面的文本。

接下來,您將要創建一個新的QColor,將其設置爲上面的可變顏色。接下來從QColor創建一個新的QBrush。然後創建一個新的QTextCharFormat並將其背景設置爲QBrush。最後,通過調用QCalendarWidget上的setWeekdayTextFormat方法來設置格式,並將您想要更改的星期幾以及您想要更改的格式傳遞給它。後續代碼設置爲一週的每一天箱在Horizo​​ntalHeader有青色的背景顏色:

QColor c = new QColor(color); 
QBrush b = new QBrush(c); 
QTextCharFormat format = new QTextCharFormat(); 
format.setBackground(b); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Sunday, format); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Monday, format); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Tuesday, format); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Wednesday, format); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Thursday, format); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Friday, format); 
this.setWeekdayTextFormat(Qt.DayOfWeek.Saturday, format); 

使用所有的代碼在一起,你有你自己的方式通過改變Horizo​​ntalHeader背景顏色.qss文件(如果你願意的話可以更多)。

5

我還沒有用4.8以下版本測試過它,但我們遇到了同樣的問題,解決方案非常簡單。我們利用這個CSS代碼:

QWidget#qt_calendar_navigationbar 
{ 
    background-color: #424242; 
    border: 1px solid #4f4f4f; 
} 

編輯:嗯,看了你之前後 - 我不知道,如果它在你的子類,但它可能是值得一試。

+0

如果將QCalendarWidget添加到QGraphicsScene,似乎不能在Qt 5.1.1中工作。例如:m_QGraphicsScene-> addWidget(新的QCalendarWidget,Qt :: Window); – user1911091

相關問題