2011-08-21 267 views
1

我在父窗口小部件上有一個QPushbutton。我現在要給父窗口小部件一個新的背景(顏色,圖像例如),這工作正常(使用QPalette)。但是,當我使用Unix時,父窗口的顏色會傳播到Button。像按鈕有透明背景。這在某些情況下很好,但有時我只想讓父窗口小部件的背景改變而不是孩子。這樣按鈕將保持其原有的「系統」外觀。如何實現這一目標?我嘗試了很多...但沒有給我想要的結果。任何想法如何實現?Qt:如何設置QPushButton的背景顏色爲系統顏色?

THX

回答

0

您是否嘗試過使用setBackgroundRole的按鈕?也許你的按鈕有QPalette::NoRole,因此從它的父項繼承它的角色。

+0

不,這是行不通的。該按鈕從其父項繼承角色...並且父項具有在角色::窗口,角色::按鈕上設置的顏色。因此改變按鈕的背景角色不會改變任何東西。 – brainpain

+0

好吧,我找到了一個解決方案...一個人必須使用standardPalette()(可以通過QApplication :: style()或者widget-> style())來獲取並覆蓋childwidget的整個調色板,或者使用標準調色板的值。 – brainpain

0

如果您的Button似乎從MainWindow繼承了背景,請嘗試以此格式設置樣式表。

this->setStyleSheet("MainWindow{background-color:red}"); 

現在,背景將不會被您的按鈕繼承。