QSS样式文件的使用方法

QSS

QSS 样式表(简称QSS)的术语和语法规则几乎和CSS相同

样式规则

在qss中,一个样式由选择器(selector)和声明(declaration)组成。其中,选择器确定了样式的作用对象,声明确定了作用于该对象的确切样式。如:

QPushButton{ color:red }

在这段代码中,QPushButton为选择器(selector),{ color: red }为样式声明(declaration)。这段代码的作用是将所有QPushButton及其子类的前景色(文本颜色)设置为红色。
可以同时对多个对象设置样式,用逗号(,)来分隔选择器(selector)。如:

QPushButton, QLineEdit, QComboBox { color: red }

声明(declaration)部分是由一个由多个<属性: 值>(键值对)组成的列表,由大括号({})包围并由分号(;)分隔开。如:

QPushButton { color: red; background-color: white }

QSS 选择器

选择器代码示例解释
通用选择器*所有 Qt 的 widget,即不声明选择器时,属性作用于所有组建
类型选择器QPushButton作用于QPushButton及其子类的实例。
属性选择器QPushButton[flat="false"]作用于非平面(flat="false")的QPushButton实例。
类选择器.QPushButton作用于 QPushButton 的实例,但不匹配其子类的实例。(加了个.)
ID选择器QPushButton#okButton作用于对象名称为 okButton 的所有 QPushButton 实例。
后代选择器QDialog QPushButton匹配作为 QDialog 的子体(子级、孙级等)的所有 QPushButton 实例。
子选择器QDialog > QPushButton匹配作为 QDialog 的直接子级的所有 QPushButton 实例。
子控制QComboBox::drop-down要设置复杂 widget 的样式,需要访问 widget 的子控件,如 QComboBox 的下拉按钮或 QSpinBox 的上下箭头。选择器可以包含子控件,从而可以将规则的应用限制到特定的 widget 子控件。
伪类选择器QPushButton:hover选择器:状态,作为选择器,支持 ! 操作符,表示。伪类选择器还支持链式规则:选择器:状态1:状态2:状态3,状态之间使用逻辑与,同时满足条件样式才生效

QSS 选择器优先级

  1. 更加具体的语句要优先级更高,有伪状态的优先级高,有指定objectname的优先级最高。
  2. QPushButton{color:red;} < QPushButton:hover{color: green} < QPushButton#A{color: white}

常用伪类选择器

伪类说明
:disabledWidget 被禁用时
:enabledWidget 可使用时
:focusWidget 得到输入焦点
:hover鼠标放到 Widget 上
:pressed鼠标按下时
:checked被选中时
:unchecked未选中时
:has-childrenItem 有子 item,例如 QTreeView 的 item 有子 item 时
:has-siblingsItem 有 兄弟,例如 QTreeView 的 item 有兄弟 item 时
:open打开或展开状态,例如 QTreeView 的 item 展开,QPushButton 的菜单弹出时
:closed关闭或者非展开状态
:onWidget 状态是可切换的(toggle), 在 on 状态
:offWidget 状态是可切换的(toggle), 在 off 状态

QSS 文件使用方法

  1. 新建一个文本文件.txt,可以在里边先写QSS代码,先不写也行;
  2. 重命名,文件后缀改成.qss;
  3. 添加到资源文件qrc中
  4. 程序中使用qss文件,例如:
QFile qss(":/ZZW/qss/zzw.qss");
qss.open(QIODevice::ReadOnly);
setStyleSheet(qss.readAll());

QSS样式的作用范围

  1. 设置全局样式
    可以在main函数中,直接给QApplication设置样式,此样式为全局样式,对整个应用都生效,例如:

    QString qstrStyle = "QPushButton{color:blue;}"
    a.setStyleSheet(qstrStyle);
    
  2. 设置窗口样式
    可以给某个窗口对象设置样式,例如:

    w.setStyleSheet(qstrStyle);
    

    此样式只对该窗口及它的子窗口生效,对其他窗口不生效。

QSS 相关资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值