2017-09-07 118 views
2

我試圖改變QComboBox(或幾個小部件其實)的顏色,但它似乎只是一個顏色屬性創建一個QStyleSheet時,它會寫所有其他屬性。最值得注意的是在Windows上,圓形的QComboBoxes變得方形,而且很醜。下面的代碼片段(請注意,實際代碼中的顏色會生成,只需在白色上使用黑色便於使用)。QStyleSheet覆蓋一般風格

QString styleSheet = "QComboBox { background-color: #ffffff; color: #000000 }"; 
combBox->setStyleSheet(styleSheet); 

對不起,這些圖像的荒謬尺寸。

這是有規律的,非風格QComboBox:

這是應用上述風格後QComboBox:

+0

它會出現你設置新的樣式表作爲* only *樣式表來應用。這確實會刪除所有其他樣式。相反,嘗試將新樣式添加到現有樣式表中,或者如果您不能這樣做,請嘗試將其添加爲其他樣式表,而不是替換舊樣式表。 – Tijmen

+0

如何添加而不是替換?該文檔基本上說setStyleSheet是我擁有的。 –

+0

我看了一下[QT文檔](http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-a-qpushbutton-using-the-box-model),它概述了這個問題爲一個按鈕,但原則是一樣的。如果修改無法通過本機樣式解析的屬性(如此處所示),則需要對整個元素進行樣式設置,因爲該元素會忽略所有本地樣式。 – Tijmen

回答

1

你使用動態樣式表。

參考:https://wiki.qt.io/Dynamic_Properties_and_Stylesheets

嘗試在代碼中使用這樣的:

ui->comboBox->setStyleSheet("background-color: rgb(16, 72, 255); color: rgb(255, 17, 80);"); 

這就像你的樣式表附加到小部件的樣式表。

+0

他沒有使用動態屬性。你的樣式表是不安全的。它沒有範圍,可能會影響該組合框的孩子 –

+0

你能提供安全版嗎?現在,我無法想象這個組合框有孩子,但它非常通用。肯定會在未來發生。 –

+0

即使應用它,它仍然給人一樣難看的樣子。 –