我目前使用Eclipse 3.5.2和Qt Jambi的4.7.2的變化水平標題背景顏色在Ubuntu 11.04納蒂獨角鯨QCalendarWidget
我有,目前擴展QCalendarWidget類。 我正在嘗試使用樣式表來設置我的日曆小部件的樣式。現在,我使用QAbstractItemView爲背景着色,但它只改變其中包含日期的單元格的背景顏色。無論我做什麼,包含星期幾名稱的水平標題段都保持白色。有沒有辦法改變使用樣式表這個頭的背景顏色?
任何幫助,將不勝感激。
謝謝。
我目前使用Eclipse 3.5.2和Qt Jambi的4.7.2的變化水平標題背景顏色在Ubuntu 11.04納蒂獨角鯨QCalendarWidget
我有,目前擴展QCalendarWidget類。 我正在嘗試使用樣式表來設置我的日曆小部件的樣式。現在,我使用QAbstractItemView爲背景着色,但它只改變其中包含日期的單元格的背景顏色。無論我做什麼,包含星期幾名稱的水平標題段都保持白色。有沒有辦法改變使用樣式表這個頭的背景顏色?
任何幫助,將不勝感激。
謝謝。
我假設您正在嘗試使用.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方法來設置格式,並將您想要更改的星期幾以及您想要更改的格式傳遞給它。後續代碼設置爲一週的每一天箱在HorizontalHeader有青色的背景顏色:
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);
使用所有的代碼在一起,你有你自己的方式通過改變HorizontalHeader背景顏色.qss文件(如果你願意的話可以更多)。
我還沒有用4.8以下版本測試過它,但我們遇到了同樣的問題,解決方案非常簡單。我們利用這個CSS代碼:
QWidget#qt_calendar_navigationbar
{
background-color: #424242;
border: 1px solid #4f4f4f;
}
編輯:嗯,看了你之前後 - 我不知道,如果它在你的子類,但它可能是值得一試。
如果將QCalendarWidget添加到QGraphicsScene,似乎不能在Qt 5.1.1中工作。例如:m_QGraphicsScene-> addWidget(新的QCalendarWidget,Qt :: Window); – user1911091
我想知道這甚至有可能嗎?經過近一個小時的研究,我最好的猜測是記住日期顯示在一個QTableWidget上(我相信),並且你想爲它編輯QHeaderView(特別是paintSection方法)。希望有人可以來買,並在這方面多說一些。 – ssell
我想你最好是要求Ct/cpp解決方案;我懷疑Jambi的實現會有所不同,如果它不同,那麼戳我...然後我會看看它是否可以修復:) – Smar