QT樣式表qss設置后無效的原因大全


 

原文鏈接

https://blog.csdn.net/qq_31073871/article/details/118212825

 

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

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

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

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

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

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

3、子類化QWidget后的類,設置樣式表無效。

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

 

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

這一點相當隱蔽,需要特別檢察。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM