学习样式表,最好的参考资料莫过于QT自带的帮助文档,随便打开一个QT工程,点击->帮助->索引->styleSheet,即可打开QT所有关于样式表的帮助信息,如下图所示:
比如,我们想查查下拉列表控件QComboBox支持哪些样式属性,可以点击上图中的QT style sheet reference,里面就有介绍。
概念1:方盒模型box-model
点击上图中的Customizing Qt Widgets Using Style Sheets ,见下图:
由以上内容可见:一个控件widget的外观被分成了4部分:边缘margin、边线border、填充padding、内容content
某个控件是否支持方盒模型,在QT style sheet reference章节里都详细说了,可自己查阅。
概念2:子控件sub-control
这一概念仍在这一章节:Customizing Qt Widgets Using Style Sheets
帮助文档举了个例子:下拉列表控件QComboBox,QT对这一控件的渲染分3部分:
- Render the QComboBox { } rule //渲染QComboBox
- Render the QComboBox::drop-down { } rule //渲染下拉按钮
- Render the QComboBox::down-arrow { } rule //渲染下拉箭头
下拉按钮是QComboBox的子控件,下拉箭头是下拉按钮的子控件,也即层次为:ComboBox->下拉按钮->下拉箭头
子控件的位置可以用subcontrol-position 和subcontrol-origin 这两个属性来定位, 定位以后,子控件也就可以使用方盒模型了
注意:帮助手册要求:对于一些复杂控件,如QComboBox、QScrollBar,等,如果我们要对这些复杂控件的子控件设置属性,那么必须把子控件的全部属性都设置一遍!!!
例如,对于pushButton,如果我们要设置QPushButton{},那么同时要设置其鼠标悬浮的样式:QPushButton::hover{},鼠标按下的样式:QPushButton::pressed{}等