QT樣式表參考CSS層疊樣式表設計,不一樣之處在於QT樣式表應用於Widget世界。css
能夠使用QApplication::setStyleSheet()
函數設置到整個應用程序上,也能夠使用QWidget::setStyleSheet()
設置到某一個部件以及子部件上。若是在不一樣的級別都設置了樣式表,QT會使用全部有效的樣式表,稱爲樣式表的層疊。ide
this->setStyleSheet("QpushButton{background:yellow}QSlider{background:blue}");
函數
QPushButton{ border-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 0, 0, 255), stop:0.19397 rgba(0, 0, 0, 255), stop:0.202312 rgba(122, 97, 0, 255), stop:0.495514 rgba(76, 58, 0, 255), stop:0.504819 rgba(255, 255, 255, 255), stop:0.79 rgba(255, 255, 255, 255), stop:1 rgba(255, 158, 158, 255)); background-color: rgb(65, 48, 255); }
QPushButton{color:red}
字體
QPushButton
是選擇符,{color:red}
是聲明,color
是屬性,red
是值this
選擇符 | 示例 | 說明 |
---|---|---|
通用選擇符 | * | 匹配全部部件 |
類型選擇符 | QPushButton | 匹配全部QPushButton實例和它的全部子類 |
屬性選擇符 | QPushButton[flat = "false"] | 匹配QPushButton的屬性flat爲false實例 |
類選擇符 | .QPushButton | 匹配全部QPushButton實例但不包含它的子類 |
ID選擇符 | QPushButton#okButton | 匹配全部QPushButton中以okButton爲對象名的實例 |
後代選擇符 | QDialog QPushButton | 匹配全部QPushButton實例,必須是QDialog的子孫部件 |
孩子選擇符 | QDialog>QPushButton | 匹配全部QPushButton實例,必須是QDialog的直接子部件 |
QComboBox
的下拉按鈕子控件url
QSpinBox
的向上向下箭頭子控件設計
選擇符能夠包含子控件對部件的特定子控件應用規則3d
QComboBox::drop-down{image:url(dropdown.jpg)}
此規則改變全部QComboBox
部件的下拉按鈕樣式code
QCheckBox:hover:checked{color:red}
當鼠標懸停在一個被選中的QCheckBox上時才應用規則。對象
特殊的優先
樣式表能夠設置在QApplication或者父部件上。部件有效的樣式表經過部件祖先的樣式表和QApplication上的樣式表合併獲得,當發生衝突時,部件本身的樣式表優先於任何繼承的樣式表,父部件優先於祖先的樣式表。
內容(content)、填襯(padding)、邊框(border)、邊距(margin)
使用background-image來指定背景圖片,若是但願背景圖片隨着部件的大小變化,就必須使用border-image。
image屬性能夠用來在border-image之上繪製一個圖片、圖片對齊參考image-position屬性。
/****************主界面背景*******************/ QMainWindow{ background-image: url(:/image/beijing01.png);/*背景圖片*/ } /****************按鈕部件*******************/ QPushButton{ background-color: rgba(100, 225, 100, 30);/*背景色*/ border-style: outset; /*邊框樣式*/ border-width: 4px; /*邊框寬度爲4像素*/ border-radius: 10px; /*邊框圓角半徑*/ border-color: rgba(255, 225, 255, 30);/*邊框顏色*/ font: bold 14px;/*字體*/ color:rgba(0, 0, 0, 100);/*字體顏色*/ padding: 6px; /*填襯*/ } QPushButton:hover{ /*鼠標懸停在按鈕上時*/ background-color:rgba(100,255,100, 100); border-color: rgba(255, 225, 255, 200); color:rgba(0, 0, 0, 200); } QPushButton:pressed { /*按鈕被按下時*/ background-color:rgba(100,255,100, 200); border-color: rgba(255, 225, 255, 30); border-style: inset; color:rgba(0, 0, 0, 100); } /****************滑塊部件*******************/ QSlider::handle:horizontal { /*水平滑塊的手柄*/ image: url(:/image/sliderHandle.png); } QSlider::sub-page:horizontal { /*水平滑塊手柄之前的部分*/ border-image: url(:/image/slider.png);/*邊框圖片*/ }
Qt樣式表能夠存放在一個以.qss
爲後綴的文件中,能夠在程序中調用不一樣的.qss
文件實現換皮膚功能。
QFile file(":/qss/my.qss"); // 只讀方式打開該文件 file.open(QFile::ReadOnly); // 讀取文件所有內容,使用tr()函數將其轉換爲QString類型 QString styleSheet = tr(file.readAll()); // 爲QApplication設置樣式表 qApp->setStyleSheet(styleSheet);
用到的時候再研究