Qt Widgets
该 Qt Widgets Module 提供了一组 UI 控件,用于创建经典的桌面风格用户界面。有关使用控件的更多信息,请参阅《用户界面概述》。
控件
控件是 Qt 中创建用户界面的主要元素。控件可以显示数据和状态信息,接收用户输入,并为需要分组的其他控件提供容器。未嵌入父控件的控件称为窗口。

QWidget 类提供了将内容渲染到屏幕上以及处理用户输入事件的基本功能。Qt提供的所有UI元素要么是QWidget 的子类,要么是与QWidget 的子类配合使用。要创建自定义控件,请继承QWidget 或其合适的子类,并重写虚拟事件处理程序。
样式
样式负责控件的绘制,并封装了图形用户界面的外观与风格。Qt Widgets使用QStyle 类来完成几乎所有的绘制工作,从而确保它们的外观与相应的原生控件完全一致。
|
|
|
Qt样式表通过类似CSS的规则自定义控件的外观。《Qt Widgets 的样式设计方法》一文阐述了何时应使用样式、StyleKit或样式表。
布局
布局是一种优雅且灵活的方式,可自动在容器内排列子控件。每个控件通过sizeHint 和sizePolicy 属性向布局报告其尺寸需求,布局则据此分配可用空间。
|
|
Qt Widgets Designer 是用于在布局中交互式创建和排列控件的强大工具。
模型/视图类
模型/视图架构提供了用于管理数据向用户呈现方式的类。使用列表和表格的数据驱动型应用程序,其结构通过模型、视图和委托将数据与视图分离。

图形视图
图形视图框架用于管理和与大量自定义的 2D 图形项进行交互,并提供一个用于可视化这些项的视图控件,支持缩放和旋转。

使用模块
要使用 Qt 模块的 C++ API,需要与该模块库进行链接,既可以直接链接,也可以通过其他依赖项间接链接。包括CMake和qmake 在内的多种构建工具都为此提供了专门的支持。
使用 CMake 构建
使用find_package() 命令在Qt6 包中定位所需的模块组件:
find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)更多详细信息,请参阅“使用 CMake 构建”概述。
使用 qmake 构建
要配置模块以便使用 qmake 进行构建,请在项目的 .pro 文件中将该模块作为QT 变量的值添加:
QT += widgets安全注意事项
Qt Widgets 中的若干类会反序列化或解析应用程序从任何来源提供的数据,而Qt无法验证其来源。请特别注意以下内容:
- QHeaderView::restoreState() 反序列化一个带版本的二进制状态数据块。
- QFileDialog::restoreState() 同样会反序列化一个二进制状态数据块,其中嵌入了QHeaderView 状态数据块。
- QMainWindow::restoreState() 反序列化描述递归嵌套工具栏和停靠小部件布局的二进制状态数据块。
- QSplitter::restoreState() 反序列化描述拆分器大小和方向的二进制状态数据块。
- Qt 样式表可以通过
url()函数引用和加载任意的本地文件。
仅向此类 API 传递您的应用程序先前生成并自行持久化的数据(通常通过QSettings 实现),或者完全由您的应用程序控制的数据。
文章和指南
- 小部件教程
- 入门指南:使用Qt Widgets
- Qt Creator:教程:Qt Widgets 应用程序
- Qt Extension for Visual Studio Code:教程:Qt Widgets 应用程序
- 模型/视图教程
- 样式设计方法Qt Widgets
示例
API 参考
模块演变
Qt Widgets列出了为 Qt 6 系列所做的模块 API 和功能方面的重大变更。
许可
Qt Widgets 模块由The Qt Company 提供商业许可。此外,该模块还提供自由软件许可:GNU 较少通用公共许可证第 3 版或 GNU 通用公共许可证第 2 版。更多详细信息请参阅Qt 许可。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.




