2014-06-27 17 views
9

我試圖在QT5中設計一個組合框。我正在使用QT Creator進行佈局,並在啓動時加載應用程序範圍的樣式表。QComboBox文本顏色不會隨樣式表變化

我已經與我的組合框的CSS如下:

QComboBox 
{ 
    color:white; 
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:1, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100)); 
    border-color: rgba(255,255,255,200); 
    border-width: 1px; 
    border-style: solid; 
} 

QComboBox QListView 
{ 
    border-style: none; 
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:0, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100)); 
} 

QComboBox::drop-down 
{ 
    width: 20px; 
    border: 1px; 
    border-color:white; 
    border-left-style:solid; 
    border-top-style: none; 
    border-bottom-style: none; 
    border-right-style: none; 
} 

QComboBox::down-arrow 
{ 
    image: url(:/ArrowImages/images/whitearrowdown16.png); 
    width: 16px; 
    height: 16px; 
} 

但在組合框中remainds作爲默認的(黑)顏色的文本顏色。下拉的顏色是白色的。邊框顏色和樣式都可以正常使用。組合框上的標籤是我需要單獨設計的某種子控件嗎?還是我錯過了別的?

謝謝。

編輯:

新增截圖清晰度

Combobox style

Drop down style

編輯2: 它看起來像這樣僅在組合框設置爲不可編輯(這是發生對我的程序來說是正確的行爲,所以並沒有真正幫助我。)當組合框設置爲可編輯時,它正確地服從樣式。我試過添加

QCombobox:!editable 
{ 
    color:white; 
} 

但它不能解決問題。

+0

如果你從一個文件中加載樣式表,你可能會在你的應用程序中加載另一個樣式表來覆蓋該特定樣式?你可以嘗試使用'QComboBox#YOUR_SPECIFIC_COMBO_BOX_NAME {color:white; }' – TWE

回答

12

只是解決了這個問題。似乎在樣式表的組合框中設置填充屬性(使用任何值)使其正確服從顏色樣式。我假設這可能只是某些設置上可能出現的某種錯誤,但如果其他人遇到同樣的問題,下面的代碼可以工作(與原始問題相比):

QComboBox 
{ 
    color:white; 
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:1, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100)); 
    border-color: rgba(255,255,255,200); 
    border-width: 1px; 
    border-style: solid; 
    padding: 1px 0px 1px 3px; /*This makes text colour work*/ 
} 
+0

這個問題在過去兩個小時裏讓我煩惱... PADDING?哇,謝謝你解決這個問題!但我想知道爲什麼?什麼樣的錯誤會導致這種情況? – SilverWolfe

+1

令人驚歎。很好的工作找出這一個。我有同樣的問題。 – Rachael

1

查看「裏面」是一個QListView。

QListView 
{ 
    color: white; 
} 

應該這樣做。

+0

對不起,這是實際的組合框本身 - 而不是下拉框 - 它不接受顏色的改變。正確的下拉樣式(儘管使用QComboBox部分的顏色,而不是它自己的,但在我的情況下,這不是問題)。 – Sam

+0

您的意思是當前的項目?對於當前的項目你的代碼(第一部分)是完全正確的('QComboBox {color:white;}')。您是否嘗試刪除顏色標籤之外的所有樣式表代碼? – OnWhenReady

+0

爲了清晰起見,我在原始問題中添加了一些截圖。我已經嘗試用只有帶顏色的組合框樣式表創建一個完全空白的樣式表,它仍然隻影響下拉列表。 – Sam