Qt工程实践_01_Qt样式表Qss(什么是QSS;基本语法;setStyleSheet函数;样式表的属性值;利用QtCreate实现样式切换;样式表实现皮肤改变实例)

本文详细介绍了Qt样式表Qss,包括基本语法、setStyleSheet函数的使用,以及如何通过QSS实现按钮按下后的颜色变化和皮肤切换。通过实例展示了在QtCreate中设置样式表的方法,并对比了手动设置与使用工具的区别。

本篇介绍什么是样式表,讨论如何使用Qt样式表Qss修改应用程序外观,并通过实例进行讲解。

了解HTML的同学都知道,一般在HTML中我们把样式表叫做CSS,在Qt中我们称之为QSS。QSS和CSS并不完全等同,语法完全类似,定义上存在一些差别。

1. 什么是QSS

QSS是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,用于美化UI界面。实现界面和程序的分离,快速切换皮肤。
QSS最大的优点就是简单便捷,我们可以通过它快速实现应用程序的外观界面。

2. QSS的基本语法


1)选择器 {property:value}
Qt中有很多控件,例如 QPushButtonQWidget等被称为选择器, {property:value}代表属性和值。

QPushButton {
   
   color: red} //代表QPushButton 颜色为红色

2)几个选择器可以指定相同的声明,使用逗号“,”来分隔选择器

 //代表QPushButton ,QLineEdit,QComboBox 颜色为红色
QPushButton,QLineEdit,QComboBox  {
   
   color: red}

3)声明部分的规则有多个属性值时包含在花括号{}中,以分号;分隔,属性之间在QSS之间是不区分大小写的

QPushButton {
   
   color: red
### 什么是 QSSQt 样式表QSS)是一种用于自定义 Qt 控件外观的样式语言,其语法类似于 CSS,但专为 Qt 框架设计[^2]。通过 QSS开发者可以灵活地控制控件的颜色、字体、边框、背景等视觉属性,从而实现界面美化和主题定制。 ### 基本语法结构 QSS基本语法由 **选择器** 和 **声明块** 组成: ```css 选择器 { 属性: 值; } ``` 例如,设置所有 `QPushButton` 的背景颜色为红色: ```css QPushButton { background-color: red; } ``` QSS 支持嵌套子控件的样式定义,例如设置 `QComboBox` 下拉箭头的样式: ```css QComboBox::down-arrow { image: url(:/icon/down_arrow.png); } ``` ### 选择器类型 QSS 提供了多种选择器来精确匹配控件实例: - **类型选择器**:匹配特定类型的控件,如 `QPushButton`。 - **类选择器**:以 `.` 开头,匹配具有指定类名的控件,如 `.QPushButton`。 - **ID 选择器**:以 `#` 开头,匹配具有指定 `objectName` 的控件,如 `#submitBtn`。 - **属性选择器**:根据控件的属性值进行匹配,如 `QPushButton[flat="true"]`。 - **后代选择器**:匹配嵌套结构中的子控件,如 `QDialog QLabel`。 - **子选择器**:匹配直接子元素,如 `QGroupBox > QLabel`。 - **并集选择器**:同时匹配多个控件类型,如 `QPushButton, QToolButton` 。 ### 常用伪状态 伪状态用于描述控件在不同交互状态下的样式,例如鼠标悬停、按下、选中等: | 伪状态 | 说明 | |----------------|--------------------------| | `:hover` | 鼠标悬停 | | `:pressed` | 鼠标按下 | | `:checked` | 已选中状态 | | `:disabled` | 禁用状态 | | `:enabled` | 启用状态 | | `:focus` | 获得焦点 | | `:unchecked` | 未选中状态 | | `:indeterminate` | 不确定状态 | | `:open` | 展开状态(如 QComboBox) | | `:closed` | 折叠状态 | 示例:设置按钮在悬停和按下时的不同背景色: ```css QPushButton:hover { background-color: #e0e0e0; } QPushButton:pressed { background-color: #c0c0c0; } ``` ### 设置 QSS 的方式 QSS 可以通过以下三种方式进行设置: 1. **直接设置字符串** ```cpp widget->setStyleSheet("background-color: #f0f0f0;"); ``` 2. **从文件加载** ```cpp void loadStyleSheet(QWidget* widget, const QString& path) { QFile file(path); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { widget->setStyleSheet(file.readAll()); file.close(); } } ``` 3. **全局应用样式** ```cpp QApplication::setStyleSheet("QPushButton { color: white; }"); ``` ### 示例代码 以下是一个完整的 QSS 样式表示例,适用于按钮美化: ```css QPushButton { background-color: #4CAF50; border: none; color: white; padding: 10px 20px; text-align: center; text-decoration: none; font-size: 16px; margin: 4px 2px; border-radius: 8px; } QPushButton:hover { background-color: #45a049; } QPushButton:pressed { background-color: #3e8e41; } QPushButton:disabled { background-color: #cccccc; color: #666666; } ``` ### 注意事项 - QSS 语法虽然与 CSS 类似,但在某些细节上存在差异,例如对伪状态和子控件的支持更为丰富。 - 在使用 QSS 时应避免过度复杂的规则,以免影响性能。 - 测试样式时应考虑不同 DPI 和分辨率下的显示效果,确保跨平台一致性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值