2011-10-20 107 views
0

我想設置QTableWidget的「!active」背景顏色以匹配「活動」顏色。我試圖做到這一點:將樣式表中的屬性設置爲另一個屬性的值?

QTableWidget::item:selected:!active{ 
background-color:QTableWidget::item:selected:active; 
} 

但它似乎並沒有工作。有沒有辦法將一個屬性的值設置爲另一個屬性的值?

感謝,

大衛

回答

0

從某種風格中引用其他樣式是不可能的。我可以考慮兩種方法:

1)從代碼中修改QTableWidget的QPalette。 QPalette對象會讓你訪問你正在尋找的屬性。

QPalette palette = myTableWidget->palette(); 
palette.setColor(QPalette::Inactive, QPalette::Highlight, palette.color(QPalette::Active, QPalette::Highlight)); 
palette.setColor(QPalette::Inactive, QPalette::HighlightedText, palette.color(QPalette::Active, QPalette::HighlightedText)); 
myTableWidget->setPalette(palette); 

2)使用一些魔法的QString:

QString styleSheet = QString("QTableWidget::item:selected:active { %1 }" 
           "QTableWidget::item:selected:!active { %1 }") 
           .arg("style_for_both_items") 
+0

嗯,我想這個問題是我不知道物品的價值:選擇:活躍的背景色,所以不知道如何設置!活動到相同的顏色。我查看了QPalette文檔,並不確定如何獲得該值。另外,如果可能的話,我想通過QtDesigner進行設置 - 但是我會在此處採用編程解決方案:) –

+0

我認爲這樣做可以,但不起作用 - 不活動的選定顏色仍然是灰色的,而活動的是橙色。 (我本來期望他們都是橙色的)。 http://pastebin.com/uvSC2rPU –

+0

我想你的答案和我最後一個問題一樣,我應該直接設置tableWidget-> currentItem() - > palette()的屬性而不是tableWidget。 ..但是這次我不得不處理一個信號來設置它,因爲currentItem沒有被定義,直到我點擊了一些東西。有沒有更好的方法來做到這一點? –

相關問題