355 字
1 分钟
【QT】布局与QSS
布局(Layouts)
布局管理子控件的几何位置与伸缩,窗口缩放时自动调整。子控件可设 minimumSize、maximumSize、sizePolicy。
| 布局类 | 说明 |
|---|---|
QHBoxLayout | 水平排列 |
QVBoxLayout | 垂直排列 |
QGridLayout | 网格 |
QFormLayout | 标签 + 字段两列表单 |
代码示例
QVBoxLayout *layout = new QVBoxLayout(this);layout->addWidget(new QPushButton("OK"));layout->addWidget(new QPushButton("Cancel"));layout->addStretch(); // 弹簧,占据剩余空间setLayout(layout);嵌套与比例
QHBoxLayout *row = new QHBoxLayout;row->addWidget(leftEdit, 1); // stretch 因子 1row->addWidget(rightEdit, 2); // 右侧占 2 份宽度Spacers
QSpacerItem 或布局的 addStretch() / addSpacing(n) 控制空白与对齐。
布局原则
- 顶层窗口或容器设一个主布局,避免用固定
setGeometry硬编码坐标。 - 对话框常用
QDialogButtonBox放标准按钮并配合布局。
QSS(Qt Style Sheets)
语法类似 CSS,用于定制控件外观(颜色、边框、字体、状态伪类等)。
基本写法
widget->setStyleSheet("QPushButton { color: white; background-color: #2d89ef; }");全局:
qApp->setStyleSheet("QToolTip { color: black; background: #ffffcc; }");选择器
| 写法 | 含义 |
|---|---|
QPushButton | 所有按钮 |
QPushButton#okButton | objectName 为 okButton |
QPushButton:hover | 悬停状态 |
QPushButton:pressed | 按下 |
QPushButton:disabled | 禁用 |
QPushButton:checked | 可选中按钮选中时 |
常用属性
QLineEdit { border: 1px solid #ccc; border-radius: 4px; padding: 4px; background: white;}QLineEdit:focus { border-color: #2d89ef;}QProgressBar { border: 1px solid grey; text-align: center;}QProgressBar::chunk { background-color: #05B8CC;}子控件(部分控件支持)
QComboBox::drop-down { width: 20px; }QScrollBar:vertical { width: 12px; }与 QPalette、QStyle 的关系
- QPalette:系统调色板,适合跟随主题微调。
- QStyle:
Fusion、Windows、macOS等原生或跨平台风格;setStyle()换整体风格。 - QSS:最灵活,可完全覆盖绘制;对复杂原生控件(如部分 macOS 控件)支持有限。
外部样式表文件
QFile f(":/styles/app.qss");if (f.open(QIODevice::ReadOnly)) qApp->setStyleSheet(QString::fromUtf8(f.readAll()));资源文件 .qrc 中可嵌入 app.qss,路径如 :/styles/app.qss。
注意事项
- 子控件设置 QSS 后可能失去部分平台原生效果。
- 动态属性可配合选择器:
widget->setProperty("danger", true);与QPushButton[danger="true"] { ... }。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
【QT】交叉编译与部署
StudyNotes 以 NXP i.MX 为例说明交叉工具链配置、Qt Creator Kits 及嵌入式板端部署要点。
2
【QT】信号槽与事件
StudyNotes 讲解信号与槽的 connect 写法、连接类型、事件处理与 eventFilter 及 QTimer 定时器。
3
【QT】入门与构建
StudyNotes 介绍 Qt 事件循环、链接库、qmake/CMake 构建及 MOC/UIC/RCC 编译流程与跨平台原理。
4
【QT】核心类型与容器
StudyNotes 介绍 QObject 对象树、QString、顺序与关联容器及迭代遍历方式。
5
【QT】对话框与常用控件
StudyNotes 涵盖 QFileDialog、QMessageBox 等标准对话框及按钮、输入、视图等常用控件分类。
