Romi-知行合一

轻轻的风轻轻的梦,轻轻的晨晨昏昏, 淡淡的云淡淡的泪,淡淡的年年岁岁。
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

Qt 样式表

Posted on 2012-08-01 19:38  romi  阅读(15750)  评论(0编辑  收藏  举报

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