http://doc.qt.io/qt-5.6/stylesheet.htmlhtml
翻譯原由
:最近作一個項目,後臺數據處理部分已經完成,須要定製前端GUI的風格,前兩天一直是邊寫代碼,邊網上查!比較麻煩的是查到的內容比較零散,因而想從Qt官網看下系統一點的教程,邊翻譯邊學吧!也順便造福一下網友!前端
Qt Style Sheets(QSS)是一個強大的工具,它使你能夠本身定義部件(widgets)的外觀,固然咱們也能夠經過子類化QStyle實現自定義部件外觀的功能。若是你學過HTML編程中的CSS,你就會發現Qt Style Sheets的概念、術語和語法深受 CSS的啓發,可是QT把QSS這個強大的工具應用於整個widgets的世界。編程
1:概覽
函數
2:QSS 的語法工具
3:在Qt Designer中使用QSSspa
4:使用QSS自定義widgets的外觀操作系統
5:QSS參考手冊翻譯
6:QSS的使用例子code
1:概覽
在代碼模式下,QSS的設置能夠經過調用QApplication::setStyleSheet() 函數,這個函數的做用範圍是整個應用程序,固然咱們也可調用QWidget::setStyleSheet()函數,僅僅做用於特定的widget對象。這裏就會出現調用多個QSS的狀況,Qt會根據就近原則進行樣式的匹配,子類本身設置過的樣式,就用本身的樣式,不會考慮父類是否設置過!只有當子類沒有設置過本身的樣式時,纔會使用父類的樣式。學過CSS的同窗應該知道我在說什麼!htm
下面是一個小例子:
例子中qss指定了全部QLineEdit類型的對象的背景都會是黃色,全部QCheckBox類型的對象的文字顏色都會是紅色。
QLineEdit { background: yellow } QCheckBox { color: red }
上面這種方式的風格定製要比使用QPalette強大不少。例如,你能夠嘗試使用QPalette::Button的方法來設置QPushButton的顏色爲紅色,可是這不能保證沒有的狀況下都能正常工做,由於在不一樣的操做系統下,部件的style是被操做系統的主題控制器嚴格限制的。(說白了QPalette::Button這種方式通用性很差)
有了QSS就行了,使用QPalette來設置style時很是困難或是不可能的事,如今QSS能夠輕鬆搞定了。若是你還在找尋強制設置close buttons或check boxs的背景是黃色,文字是紅色的方法,那麼QSS就是你要找的答案。
使用了QSS的widget的顯示效果很是好,和當前系統的風格也會比較搭(老外好我廢話)。任何QSS的設置都會產生效果,不像使用QPalette時,QSS提供的效果是能夠獲得保證的!(和上面說的同樣,建議你使用QSS)。此外Qt Designer中已經集成了設置QSS的方法,這樣很是方便設置好效果後立刻能夠看到widgets的表現。
QSS也能夠爲你的應用程序提供很是不同的外觀和感覺,而不須要使用QStyle的子類。例如,你能夠對radio buttons和check boxs使用任意的背景圖片,從而讓他們看起來更顯眼。若是不使用QSS,你就須要子類化一些style 類才能達到效果,例如子類化中須要重寫style hint。使用QSS後的效果圖以下
當QSS的設置激活後,QStyle返回的是一個常常包裝後的QWidget::sytle()函數,該函數中包裝了QSS設置的」style sheet」,而不是與具體操做系統有關的style。部件在被繪製時,優先使用QWidget::sytle()函數中包含的sytle,只有該函數中沒有設置的style,纔會調用底層與平臺相關的style。
」2:QSS 的語法「
.......