天天看點

QT樣式表qss設定後無效的原因大全

設定樣式表無非兩種方式,1是直接在ui設計師界面填寫,這樣所見即所得,2是用代碼setStylesheet。

不過令人困惑的是,經常設定了樣式表之後,運作出的結果與預期不符,總結可能有以下原因:

1、子控件如果設定了樣式表,那麼他會把從父控件送來的【同選擇器】下的樣式表覆寫。

注:【樣式表選擇器】是專業術語,請自行搜尋學習。

2、子類如果設定了樣式表,那麼從父類繼承來的【同選擇器】下的樣式表覆寫。

注:子類和子控件不是一個概念。子控件是QWidget的樹狀關系。

3、子類化QWidget後的類,設定樣式表無效。

官方手冊已經特别指出了這個問題,解決方案是,在QWidget的子類中覆寫painterEvent函數

QT樣式表qss設定後無效的原因大全

4、UI設計師界面設定過qss,而後又把編輯樣式表的框删幹淨了。這不算完,因為屬性清單會顯示為粗體,這樣qt會自動生成這種空樣式表的代碼: this->setStyleSheet(""); 要想真正删除,必須點選還原按鈕。

這一點相當隐蔽,需要特别檢察。

QT樣式表qss設定後無效的原因大全

5、用代碼設定的qss會覆寫在ui設計師界面填寫的【同選擇器】下的qss。因為我們常把自己的代碼,在構造函數中,放到qt自動生成的 ui->setupUi(this); 後面。如果你調換了順序,那就是代碼設定的qss無效,而ui設計師設定的有效。

繼續閱讀