【Qt】样式属性

样式属性

QSS 中的样式属性⾮常多, 不需要都记住. 核⼼原则还是⽤到了就去查.

⽂档的 Qt Style Sheets Reference 章节详细介绍了哪些控件可以设置属性, 每个控 件都能设置哪些属性等.

在样式属性中有一个“盒子模型需要重点介绍”

盒子模型

在⽂档的 Customizing Qt Widgets Using Style Sheets 的 The Box Model 章节介绍了盒模型.

⼀个遵守盒模型的控件, 由上述⼏个部分构成.

  • Content 矩形区域: 存放控件内容. ⽐如包含的⽂本/图标等.
  • Border 矩形区域: 控件的边框.
  • Padding 矩形区域: 内边距. 边框和内容之间的距离.
  • Margin 矩形区域: 外边距. 边框到控件 geometry 返回的矩形边界的距离

默认情况下, 外边距, 内边距, 边框宽度都是 0。

可以通过⼀些 QSS 属性来设置上述的边距和边框的样式.

QSS属性说明

margin

设置四个⽅向的外边距. 复合属性.

padding

设置四个⽅向的内边距. 复合属性.

border-style

设置边框样式

border-width

边框的粗细

border-color

边框的颜⾊

border

复合属性, 相当于 border-style + border-width + border-color

复合属性:

margin 可以拆成四个属性:

  • margin-left
  • margin-right
  • margin-top
  • margin-bottom

假设:margin: 10px; 表示四个方向都是10px的外边距。

           margin: 10px 20px; 表示上下 10px; 左右 20px;

           margin: 10px 20px 30px 40px; 表示上右下左(顺时针)

同理padding 也是可以拆成四个属性的。

例子:设置内边距

(1)在界面上设置一个label

(2)在main.cpp文件中设置全局样式

  • border: 5px solid red 相当于 border-style: solid; border-width: 5px; border-color: red; 三个属性的简写形式.
  • padding-left: 10px; 是给左侧设置内边距

例子:设置外边距

(1)在widget.cpp文件中设置一个按钮

(2)设置外边距

【注意】这里的按钮看起来变小了,但是实际上使用qDebug()打印其大小是没有变化的,是因为当前按钮的边框被外边距挤的缩⼩了。

<think> 根据用户的需求,用户想要查找Qt样式表的所有属性。但是,Qt样式表的属性非常多,并且不同的控件支持的属性可能不同。因此,我们不可能在这里列出所有的属性,但是我们可以提供一些常用的属性类别和属性,以及如何查找更多属性的方法。 ### Qt样式属性概览 Qt样式表支持CSS2标准的大部分属性,并且有一些扩展属性。以下是一些常用的属性类别和属性: #### 1. 通用属性(适用于大多数控件) - **background**:设置背景,可以是颜色、图片或渐变。例如: ```css background: red; /* 纯红色背景 */ background: url(:/images/back.png); /* 背景图片 */ background: qlineargradient(...); /* 线性渐变 */ ``` - **color**:设置前景色(通常是文本颜色)。例如: ```css color: white; ``` - **border**:设置边框。例如: ```css border: 1px solid black; /* 1像素宽的黑色实线边框 */ ``` - **border-radius**:设置边框圆角。例如: ```css border-radius: 10px; ``` - **padding**:设置内边距。例如: ```css padding: 5px; ``` - **margin**:设置外边距。例如: ```css margin: 10px; ``` #### 2. 字体属性 - **font-family**:设置字体族。例如: ```css font-family: "微软雅黑"; ``` - **font-size**:设置字体大小。例如: ```css font-size: 12pt; ``` - **font-weight**:设置字体粗细。例如: ```css font-weight: bold; ``` - **font-style**:设置字体样式。例如: ```css font-style: italic; ``` #### 3. 特定控件属性 某些控件有特定的属性,例如: - **QCheckBox** 和 **QRadioButton**: ```css /* 设置复选框的指示器(小方框)样式 */ QCheckBox::indicator { width: 13px; height: 13px; } ``` - **QPushButton**: ```css /* 设置按钮的不同状态样式 */ QPushButton:hover { background-color: #ff0000; } ``` - **QSlider**: ```css /* 设置滑块的样式 */ QSlider::groove:horizontal { height: 6px; background: gray; } ``` - **QProgressBar**: ```css /* 设置进度条的样式 */ QProgressBar::chunk { background-color: #05B8CC; } ``` #### 4. 伪状态(Pseudo-States) 伪状态用于设置控件在特定状态下的样式,例如鼠标悬停、按下、禁用等。例如: ```css QPushButton { background-color: #333; } QPushButton:hover { background-color: #555; } QPushButton:pressed { background-color: #111; } QPushButton:disabled { background-color: #777; } ``` #### 5. 子控件(Sub-controls) 一些复杂的控件由多个子控件组成,例如QComboBox包括下拉箭头、文本框等。可以通过子控件选择器来设置这些部分的样式。例如: ```css /* 设置QComboBox的下拉箭头样式 */ QComboBox::down-arrow { image: url(down_arrow.png); } ``` ### 如何查找完整的属性列表? 由于Qt样式属性众多,且不同控件支持的属性可能不同,建议查阅Qt官方文档: - [Qt样式表参考](https://doc.qt.io/qt-5/stylesheet-reference.html) 提供了所有支持的属性列表和说明。 ### 示例:使用多个属性 以下是一个设置QPushButton样式的示例: ```css QPushButton { background-color: #2D2D2D; color: white; border: 1px solid #555; border-radius: 5px; padding: 5px 10px; font-family: "Arial"; font-size: 12pt; } QPushButton:hover { background-color: #3F3F3F; border: 1px solid #777; } QPushButton:pressed { background-color: #1F1F1F; } ``` ### 注意事项 - 样式属性是大小写不敏感的。 - 某些属性只适用于特定的控件,使用前请查阅文档。 - 样式表会覆盖控件的默认样式,但不会覆盖通过代码直接设置的样式(例如`setPalette`)。 ### 参考 本文参考了以下资料: - Qt官方文档:样式表参考[^1] - 博客文章:Qt样式表常用属性属性值介绍[^1] - 示例代码:使用样式表设置部件背景[^2] §§相关问题§§ 1. Qt样式表中如何设置控件的悬停效果? 2. 如何为不同的Qt控件(如QLineEdit、QComboBox)定制样式? 3. Qt样式表如何实现渐变背景? 4. 如何解决Qt样式表设置后无效的问题? </think> ### Qt样式属性全集指南 Qt样式表(QSS)提供了丰富的属性属性值来控制控件外观。以下是分类整理的完整属性集(基于Qt 5.15官方文档和常用实践): --- #### **1. 通用属性**(适用于所有控件) | 属性 | 描述 | 示例值 | |------|------|--------| | `color` | 文本颜色 | `red`, `#FF0000`, `rgb(255,0,0)` | | `background` | 背景(可组合) | `red url(image.png)`, `qlineargradient(...)` | | `border` | 边框(可组合) | `1px solid black` | | `font` | 字体(可组合) | `bold 14px "Arial"` | | `padding` | 内边距 | `5px`, `2px 4px` | | `margin` | 外边距 | `10px` | | `min-width` | 最小宽度 | `100px` | | `max-height` | 最大高度 | `200px` | --- #### **2. 背景与边框** | 属性 | 描述 | |------|------| | `background-color` | 纯色背景 | | `background-image` | 背景图片 | | `background-repeat` | 图片重复方式 | `repeat-x`, `no-repeat`[^2] | | `background-position` | 图片位置 | `center`, `right top`[^2] | | `border-radius` | 圆角半径 | `5px`, `10px` | | `border-style` | 边框样式 | `dotted`, `double` | | `border-width` | 边框宽度 | `2px` | | `border-color` | 边框颜色 | `#CCC` | --- #### **3. 文本与字体** | 属性 | 描述 | |------|------| | `font-family` | 字体族 | `"Microsoft YaHei"` | | `font-size` | 字体大小 | `12pt`, `16px` | | `font-weight` | 字体粗细 | `bold`, `300` | | `text-align` | 文本对齐 | `center`, `right` | | `text-decoration` | 文本装饰 | `underline`, `line-through` | --- #### **4. 控件专用属性** ##### **按钮 (`QPushButton`)** ```css QPushButton:pressed { background-color: #555; /* 按下状态 */ } QPushButton:disabled { color: gray; /* 禁用状态 */ } ``` ##### **列表 (`QListView`, `QTreeView`)** ```css QListView::item:selected { background: blue; /* 选中项背景 */ } QListView { show-decoration-selected: 0; /* 仅文本范围选择[^3] */ } ``` ##### **进度条 (`QProgressBar`)** ```css QProgressBar::chunk { background: #5CD85A; /* 进度块颜色 */ } ``` ##### **滑块 (`QSlider`)** ```css QSlider::handle:horizontal { width: 20px; /* 滑块手柄宽度 */ } ``` --- #### **5. 伪状态与子控件** | 类型 | 语法 | 说明 | |------|------|------| | **伪状态** | `:hover`, `:pressed` | 交互状态控制 | | **子控件** | `QComboBox::drop-down` | 组合框下拉按钮 | | **子控件** | `QSpinBox::up-button` | 数字框上调按钮 | --- #### **6. 高级属性** | 属性 | 描述 | |------|------| | `alternate-background-color` | 交替行背景(表格) | | `gridline-color` | 网格线颜色 | | `selection-background-color` | 选中区域背景 | | `outline` | 焦点框样式 | > 💡 **完整参考**: > Qt官方文档 [Qt Style Sheets Reference](https://doc.qt.io/qt-5/stylesheet-reference.html) 包含所有属性详细说明。
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值