Qt中可以靈活的使用層疊樣式表(CSS),其語法和css很相似。因為HTML CSS的靈活性,可以很方便的為QT界面設計自己需要的外觀。
QT4.8各部件Style Sheets的用法示例在這里:http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qlineedit
Style Sheets用戶手冊在這里:http://qt-project.org/doc/qt-4.8/stylesheet-reference.html#font
官網上寫的很詳細了,我就不多說了,直接抄過來沒啥意思說下需要注意的幾點。
1.各子對象設置樣式表
部件的對象名調用樣式表,如下
comboBox->setStyleSheet("QComboBox{border:1pxsolidgray;border-radius:3px;padding:1px18px1px3px;}");
這樣單獨對該部件設置樣式表。需要注意的就是,當后面再次使用setStyleSheet函數對comboBox設置樣式表時,之前設置的樣式表就不起作用了,也即樣式被現在定義效果的取代了。
如果想定義所有某一類控件(比如界面上所有的QComboBox)一個樣式,可以使用qApp進行設置。
2.使用qApp設置樣式表
qApp是一個全局對象,使用其設置樣式表之后,部件就固定樣式了,當然,后面使用某個子對象調用setStyleSheet函數時,會只改變函數中設置的樣式,其他的樣式不會發生改變。
比如:
qApp->setStyleSheet("QPushButton{border:2pxsolidblue;border-radius:6px;background-color:#E3EAA5;min-width:80px;}QComboBox{border:1pxsolidgray;border-radius:3px;padding:1px18px1px3px;}QLineEdit{border:1pxsolidgray;border-radius:5px;padding:08px;selection-background-color:darkgray;}");
這句話定義了按鈕、下拉框、行編輯框的樣式,界面中這三種部件都按照里面定義的樣式顯示。如果后面要對其中一個子部件的樣式進行修改,可以直接調用setStyleSheet,將需要的樣式覆蓋覆蓋掉之前的,其他的保留,例如
pushButton->setStyleSheet("QPushButton{background-color:red;}");
這樣就只改變按鈕的背景色,邊框大小那些qApp定義好的還是不變。
注意:當很多部件布局在一起時,有時先使用qApp,然后在子部件中設置會出現意想不到的結果,這時只有不用qApp,直接對子部件進行樣式表設置,每次樣式表元素都要設置全,因為單獨設置會覆蓋掉之前的樣式表。
