Qt中可以靈活的使用層疊樣式表(CSS),其語法和CSS很相似。因為HTML CSS的靈活性,所以可以很方便的為QT界面設計自己需要的外觀。除了子類化Style類,使用QT樣式表(QStyleSheet)是另一種快速改變QT程序UI風格的方法,它很大程度上借鑒和參考了 HTML層疊樣式表的語法和思想。
StyleSheet文件的默認后綴名為qss,可通過命令行參數 -stylesheet filename.qss 來設置樣式表,也可通過QApplication::setStyleSheet或QWidget::setStyleSheet來設置應用程序或特定控件要使用的樣式表。::setStyleSheet函數的參數是字符串(不是qss文件的名字,而是樣式表的內容),所以直接使用的話,不方便一次設置大量的規則,但可使用資源文件將qss樣式表嵌入到程序中,然后通過QApplication::setStyleSheet來使用。
下面簡單介紹Qt樣式表(QSS)的使用。
1、在當前工程目錄下建立.qss格式的文件,如:css.qss,在其中編寫Qt支持的CSS代碼,如下所示:
QPushButton:hover { color:yellow; background-color:green; } QPushButton[text="Cancel"] { color:red; } QTableView::item:hover,QLineEdit:hover,QComboBox:hover,QTextEdit:hover { background-color:rgb(127,255,212); } QMenuBar,QStatusBar { background-color:rgb(100,149,237); }
2、在Qt程序中設置該樣式表
在Qt程序的合適位置添加如下代碼:
//讀取樣式表 QFile qssFile("css.qss");//資源文件":/css.qss" qssFile.open(QFile::ReadOnly); if(qssFile.isOpen()) { QString qss = QLatin1String(qssFile.readAll()); qApp->setStyleSheet(qss); qssFile.close(); }
在程序中可通過qApp設置樣式表,也可通過控件對象設置樣式表。
3、QSS語法
同CSS一樣,它也由Selector和Declaration組成,如:
QPushButton { color: red; }
若有幾個Selector指定了相同的Declaration,可使用逗號將Selector選擇器分開,如:
QPushButton, QLineEdit, QComboBox { color: red; }
注:
CSS的語法請參見:http://www.w3school.com.cn/css/css_syntax.asp
Qt Style Sheets的詳細介紹請參見官網:http://doc.qt.io/qt-4.8/stylesheet.html