Qt 文档:https://doc.qt.io/qt-5/stylesheet-syntax.html
依Qt文档所写QSS术语以及语法规则和HTML CSS几乎相同,如果css已经了解,可以快速浏览本篇文章
术语 & 语法规则:
Style Rules:
QPushButton { color:red; }
语法规则:selector declaration (两者之间可以不再同一行),selector 指的是红色部分QPushButton,declaration 指的是绿色部分{ color: red;}。
selector 指的是对某种类型的控件起作用,显然此处指的就是对QPushButton类型的控件起作用(注意:对于selector起作用的范围,比如是自己本身还是子类也同样会起作用的问题,稍后会提到,多个selector 用逗号隔开)
declaration指的是设置selector 这种控件的某个属性以及属性值,这里设置的是:QPushButton 的color 属性,color属性的值被设置为red,其作用是渲染QPushButton以及其子类的文本字体颜色为红色(declaration中的属性类型,Qt官网文档介绍的非常详细,多个属性用分号隔开)
Selector Types:
selector | example | explanation |
universal selector(通配符选择器) | * | 匹配所有的控件 |
type selector(类型选择器) | QPushButton | 匹配QPushButton及其子类的的实例 |
property selector(属性选择器) | 属性匹配QPushButton[jk] | 当QPushButton 类型的控件设置jk 属性时,无论属性值是多少都会匹配 |
完全匹配 QPushButton[jk=value] | 当QPushButton 类型的控件设置jk 属性且属性值为value时匹配 |
部分值匹配 QPushButton[jk~=value] | 当QPushButton 类型的控件设置jk 属性且属性的类型为stringlist(也就是一个字符串列表,以空格隔开),列表中只要包含value(value是一个完整的单词)就会匹配 |
部分值匹配 QPushButton[jk|=value] | 当QPushButton 类型的控件设置jk 属性且属性的类型为stringlist(也就是一个字符串列表,以“-”隔开),列表中只要包含value(value可以是一个完整的单词,也可以是单词的一部分)就会匹配 |
Class Selector(类名称选择器) | .QPushButton等价于 *[class~="QPushButton"] | 匹配类型为QPushButton的控件 |
ID Selector(ID选择器) | QPushButton#okButton | 匹配所有对象名为okButton的QPushButton实例 |
Descendant Selector(后代选择器) | QDialog QPushButton | 匹配QDialog 后代(child ,grandchild)中类型为QPushButton的实例 |
Child Selector(自选择器) | QDialog > QPushButton | 匹配QDialog的直系子类 |