QSS(Qt Style Sheets)

QSS是Qt中用于定制控件外观的机制,类似HTML的CSS。它允许分离功能设计和美学设计,且语法灵感来自CSS。QSS支持选择器(如通用、类型、属性、类和ID选择器),子控件选择器(如子控件、伪状态)以及级联和继承规则。样式规则由选择器和声明组成,可应用于QApplication、父控件和子控件。冲突时,特定规则优先。QSS还涉及Box模型、对象属性设置及子控件的处理。了解QSS能帮助开发者更高效地自定义Qt应用程序的界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1、QSS概述

Qt样式表(Qt Style Sheets)是一种强大的机制.允许您定制widgets的外观,除了已经通过继承于QStyle之外。概念、术语和语法的Qt样式表大量的灵感来自HTML层叠样式表(CSS),但适应世界的小部件。

样式表可以设置文本规范,在整个应用程序使用QApplication::setStyleSheet()或在一个特定的窗口小部件(和子部件)使用QWidget::setStyleSheet()。如果有几个样式表设置在不同层次上,Qt的有效样式表来自于这些所有的设置。这就是所谓的级联。

好处:1.将功能设计和美学设计分开

2.CSS设计资源多,查找容易

CSS语法学习:http://www.w3school.com.cn/h.asp

CSS 参考手册:http://www.w3school.com.cn/cssref/index.asp

注意:Qt样式表目前不支持自定义QStyle子类。

2、样式规则

1. 样式表单由一系列样式规则组成。每条规则可以分成两部分:选择器和声明

selector {
      attribute: value  }

选择器表示规则作用到哪些控件上;声明则详细说明了是什么规则。

2.Qt的样式表语法不区分大小写,所以color,Color,coLor,coloR都表示同样的颜色属性。但是指代类的类名的时候,是区分大小写的。除了“类名”,“对象名”,“Qt属性名”这三样东西是大小写敏感的外其他的东西都是大小写不敏感的,如color与Color代表同一属性。

3. 多个选择器可以并列使用,它们之间用逗号隔开,例如:

QPushButton,QLineEdit, QComboBox{
     color: red }

4.声明部分也可以有多个并列,之间用分号隔开。

3、选择器类别

1.一般选择器(selector)

      1. 通用类型选择器:*    会对所有控件有效果。
      2. 类型选择器:QPushButton 匹配所有QPushButton的实例和其子类的实例。
      3. 属性选择器:QPushButton[flat=”false”] 匹配所有QPushButton属性flat为false的实例。
      4. 类选择器:    .QPushButton   匹配所有QPushButton的实例,但不包含其子类。
      5. ID选择器:    QPushButton#okButton 对应Qt里面的objectname设置,使用这条CSS之前要先设置对应控件的objectname为okButton。
      6. 后裔选择器:QDialog QPushButton 匹配所有为QDialog后裔的QPushButton实例。
      7. 子选择器:   QDialog > QPushButton 匹配所有的QDialog直接子类QPushButton的实例,不包含儿子的儿子的递归。
### 关于Qt Style Sheets Editor的许可证类型及使用限制 #### Qt Style Sheets (QSS) 的许可概述 Qt框架及其组件通常遵循两种主要类型的许可证:商业许可证和开源GNU通用公共许可证(GPL/LGPL)。具体到Qt Style Sheets Editor工具,其并未单独作为一个独立模块存在,而是集成在Qt Creator或通过其他方式提供给开发者。因此,它的许可证取决于整个Qt项目的授权模式[^1]。 如果开发人员选择基于LGPL协议下的Qt版本,则需满足以下条件才能合法使用Qt Style Sheets功能及相关编辑器: - 修改后的源码必须公开共享; - 动态链接库形式分发应用程序时允许不开放核心业务逻辑代码[^3]。 而对于采用商业版授权的情况来说,用户享有更灵活的权利去部署自己的产品而无须对外公布内部实现细节[^2]。 需要注意的是,《Style Sheet Example》案例展示的具体特性可能因不同发行版本有所差异,比如提到的Qt4.7中的演示内容或许已经更新迭代至更高版本里。对于最新稳定发布的Qt系列而言,始终建议查阅官方文档获取最权威准确的信息。 另外,在实际项目中运用诸如QLineEdit这样的控件并对其进行外观定义操作时也要注意保持一致性以及用户体验友好度等问题[^4]。 ```python # 示例:简单的QLineEdit样式设置 lineEdit.setStyleSheet(""" QLineEdit { border: 1px solid gray; border-radius: 5px; padding: 0 8px; background: white; selection-background-color: blue; } """) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值