在使用Qt时, 为了让软件美观, 会用到QSS渲染小部件. 然而在写QSS时既没有自动补全, 也没有错误提示非常不方便, 因此记录下本文章.
各个子控件以及如何知道它有哪些零件;
在解决问题前, 先了解在Qt帮助文档中如何查到需要的style;
在帮助文档索引搜索: Qt Style Sheets 既有官方对stylesheets的详细介绍 以及一些简单的例子
Style Rules 样式规则
一句完整的样式语句应该由 一个selector和一个declaration组成
selector: 指定哪些小部件受规则影响
declaration: 指定小部件哪些属性受到修改
QPushButton{ color:red;}
Selector Types 选择器类型
选择器 | 例子 | 说明 |
---|---|---|
万能选择 | * | 对所有小部件生效包括其子对象 |
类型选择器 | QPushButton | 对QPushButton生效以及其子类 |
属性选择器 | QPushButton[flat=“false”] | 在QPushButton的flat属性为false时生效 |
class选择器 | .QPushButton | 匹配QPushButton实例不匹配QPushButton子类 |
ID选择器 | QPushButton#okButton | 匹配对象名称为okButton的所有QPushButton实例 |
后裔选择器 | QDialog QPushButton | 匹配的QPushButton都是QDialog的children,grandchildren,etc |
子选择器 | QDialog > QPushButton | 匹配QPushButton的所有实例,它们是QDialog的直接子对象 |
Sub-Controls
复合的控件会拥有子控件, 例如: QComboBox就有下拉框
Selector 选择器 可以包含子控件
QComboBox::drop-down{color: red;}
查询类型控件有什么子控件在帮助文档 Qt Style Sheets Reference 的 List of Stylable Widgets
Pseudo-States
Selector 选择器 可以包含 伪状态
QComboBox::drop-down:hover { image: url(dropdown_bright.png) }
查询控件的伪状态有哪些在 帮助文档Qt Style Sheets Reference的 List of Pseudo-States