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,直接对子部件进行样式表设置,每次样式表元素都要设置全,因为单独设置会覆盖掉之前的样式表。