qt樣式表的術語和語法規則幾乎和css相同。
1 qss樣式規則由乙個選擇器和宣告組成。qpushbutton,qpushbutton為選擇器,為宣告。
2 多個選擇器可指定同乙個宣告,用來對這一組部件統一設定。如qpushbutton,qlabel,qtextline;
qt style sheets reference
中list of properties
部分。
qss支援所有的selectors defined in css2
。下表總結最有用的型別選擇器。
選擇器 例項
說明通用選擇器 *
匹配所有部件
型別選擇器
qpushbutton 匹配
qpushbutton
及子類的例項
類選擇器
.qpushbutton 匹配
qpushbutton
但不包含子類
屬性選擇器
qpushbutton[flat =「flase」] 匹配
qpushbutton
中flat
為false
的例項
id選擇器
qpushbutton#okbutton 匹配
objectname
為okbutton
的例項
後代選擇器
qdialog qpushbutton
匹配屬於
qdialog
後代(孩子,子孫等)的
qpushbutton
所有例項
子類選擇器
qdialog>qpushbutton
匹配屬於
dialog
直接子類的
qpushbutton
所有例項。
對於樣式複雜的部件,需要訪問子控制項,例如:qcombobox的下拉按鈕或qspinbox的上下箭頭。例如:qcombobox::drop-down
qt style sheets reference
中list of stylable widgets
部分和qt style sheets reference
中list of sub-controls
部分。
偽選擇器可以包含偽狀態,意味著限制基於部件狀態的應用程式規則。偽狀態出現在偽選擇器的後面,用冒號(:)關聯。列如滑鼠滑過按鈕: qpushbutton:hover
偽狀態用感嘆號(!)表示否定,例如滑鼠不滑過qpushbutton:!hover
偽狀態可以連線使用,這時候隱藏了乙個邏輯與。例如當滑鼠滑過乙個選擇的qcheckbox部件。qcheckbox:hover:checked。
如果需要可使用」 , 」來表示邏輯或。列如 qcheckbox:hover:checked
偽狀態也可以和子控制項組合qcombobox::drop-down:hover
可實現動態的效果。可以為qobject設定乙個urgent屬性,該屬性將跟隨該類。如下建立樣式表選擇器依賴於動態屬性,例如urgent:qlineedit[urgent = true]
當屬性值發生變化時,樣式表不會自動發生變化,需要手動更新。例如:
mylineedit->setproperty("urgent", true);
mylineedit->style()->unpolish(mylineedit); //將原來的樣式表屬性進行清除
mylineedit->style()->polish(mylineedit); //設定新的樣式表屬性
任何可被識別的q_property都可使用qproperty-語法設定。
比如:在qlabel 中:q_property(qstring text read text write settext) 則可在樣式表中設定成:qlabel 與settext()具有同樣的作用。
當需要設定乙個原始屬性沒有的屬性時,自定義屬性可派上用場了。需要注意的是qss只能用於qwidget及其子孫。
qt助手中有關各種部件的qss詳細講解,資源很豐富,請參考:qt style sheets examples。
Qt之QSS樣式表
一 簡介 1 qt樣式表是一種強大的機制,它允許您自定義小部件的外觀,而不僅僅是通過子類化qstyle已經可以實現的功能。qt樣式表的概念 術語和語法與html的css樣式表類似。二 樣式表語法 樣式的規則1 樣式規則由選擇器和宣告組成。選擇器指定哪些小部件受規則影響 宣告指定應該在小部件上設定哪些...
qss 介面 樣式表
qpushbutton 設定 icon 後不能再通過樣式表設定 background color 屬性 但是可以設定background image 屬性 不清楚原因。一般情況下button為觸發方式 trigger 只有設定為checkable的時候,轉為切換狀態即toggled 預設狀況下che...
Qt樣式表qss的兩種用法
qt的 qss 樣式表 使我們能夠自定義控制項的顯示效果,令介面看起來不再單調,更具個人風格,而在 vs qt 的開發環境下,實現樣式表主要有兩種方式,下面以 qpushbutton 為例介紹這兩種實現方式 1.通過qt designer修改樣式表 在vs下新建 qt工程,會自動生成乙個 ui檔案,...