天天看點

Qt樣式表Qt樣式表

Qt樣式表

标簽(空格分隔): Qt樣式表、setStyleSheet、選擇器

一、Qt樣式表

1.1 Qt樣式表介紹

Qt樣式表是一個可以自定義部件外觀的強大機制,樣式表的概念、術語、文法均受到HTML的層疊樣式表(Cascading Style Sheets,CSS)的啟發。

樣式表可通過QApplication::setStyleSheet()函數将其設定到整個應用程式上,也可以使用QWidget::setStyleSheet()将其設定到指定的部件或子部件上,不同級别均可設定樣式表,稱為樣式表的層疊。樣式表也可通過設計模式編輯樣式表。

1.2 Qt樣式表文法

  • (1) 樣式規則

    每個樣式規則由選擇器和聲明組成。

    選擇器:指定受該規則影響的部件。

    聲明:指定這個部件上要設定的熟悉

    如:QPushButton{color:red}

    QPushButton是選擇器;

    {color:red}是聲明;

    color是屬性;

    red是值。

    選擇器{屬性1:值1;屬性2:值2;屬性3:值3}

    此規則指定了QPushButton和它的子類使用紅色作為前景色(指字型顔色)。樣式表中一般不區分大小寫,如color與coLOR表相同屬性,但類名、對象名及Qt屬性名區分大小寫。

    聲明中的多組“屬性:值”清單以分号“;”隔開,如

    QPushButton{color:red;background-color:white} //前景色為紅色,背景色為白色

  • (2)選擇器類型
選擇器 示例 說明
通用選擇器 * 比對所有部件
類型選擇器 QPushButton 比對所有QPushButton執行個體及它的所有子類
屬性選擇器 QPushButton[flat=”false”] 比對QPushButton的屬性flat為false的執行個體
類選擇器 .QPushButton 比對所有QPushButton執行個體,但不包括它的子類
ID選擇器 QPushButton#okButton 比對所有QPushButton中的okButton對象的執行個體
後代選擇器 QDialog QPushButton 比對所有的QPushButton執行個體,它們必須是QDialog的子孫部件
孩子選擇器 QDialog>QPushButton 比對所有的QPushButton執行個體,它們必須是QDialog的直接子部件
  • (3)子部件

    對于一些複雜的部件修改樣式,可能需要通路它們的子部件,如QComboBox的下拉按鈕,QSpinBox的向上、向下箭頭燈。

    如:

    下拉按鈕設定圖檔屬性:

    QComboBox::drop-down{image:url(dropdown.png)}

  • (4)僞狀态

    ①選擇器可以包含僞狀态來限制規則在部件的指定狀态上的應用。僞狀态在選擇器之後,用冒号隔離。如

    滑鼠懸停在按鈕上時被應用:

    QPushButton:hover{color:white}

    滑鼠不懸停在按鈕上時被應用(!表否定):

    QPushButton:!hover{color:white}

    ②僞狀态可多個連用,達到邏輯與效果。如

    滑鼠懸停在一個被選中的QCheckBox部件上時才應用規則:

    QCheckBox:hover:checked{color:white}

    ③僞狀态可通過逗号達到邏輯或效果。如

    QCheckBox:hover,checked{color:white}

    ④僞狀态和子部件聯合使用。如

    QComboBox::drop-down:hover{image:url(dropdown_bright.png)}

  • (5)沖突解決

    幾個樣式規則對相同的屬性指定不同的值時會産生沖突。如

    QPushButton#okButton{color:gray}

    QPushButton{color:red}

    沖突原則:特殊的選擇器優先。此例中QPushButton#okButton代表的是單一對象,而不是一個類的所有執行個體,是以okButton的文本顔色會是灰色的。同樣的有僞狀态的比沒有僞狀态的優先。

1.3 Qt設計模式下設定樣式表

  • ①右鍵單擊部件,選擇“改變樣式表”,然後進行樣式的編輯。
  • ②部件屬性區選擇styleSheet也可進行樣式的設定。
Qt

繼續閱讀