本页内容

Qt Widgets

该 Qt Widgets Module 提供了一组 UI 控件,用于创建经典的桌面风格用户界面。有关使用控件的更多信息,请参阅《用户界面概述》。

控件

控件是 Qt 中创建用户界面的主要元素。控件可以显示数据和状态信息,接收用户输入,并为需要分组的其他控件提供容器。未嵌入父控件的控件称为窗口。

包含多个子控件的父控件

QWidget 类提供了将内容渲染到屏幕上以及处理用户输入事件的基本功能。Qt提供的所有UI元素要么是QWidget 的子类,要么是与QWidget 的子类配合使用。要创建自定义控件,请继承QWidget 或其合适的子类,并重写虚拟事件处理程序。

样式

样式负责控件的绘制,并封装了图形用户界面的外观与风格。Qt Widgets使用QStyle 类来完成几乎所有的绘制工作,从而确保它们的外观与相应的原生控件完全一致。

Windows 风格的标签控件

Fusion 桌面风格标签页控件

macOS 风格的标签控件

Qt样式表通过类似CSS的规则自定义控件的外观。《Qt Widgets 的样式设计方法》一文阐述了何时应使用样式、StyleKit或样式表。

布局

布局是一种优雅且灵活的方式,可自动在容器内排列子控件。每个控件通过sizeHint 和sizePolicy 属性向布局报告其尺寸需求,布局则据此分配可用空间。

5-儿童布局

6个孩子的布局

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无法验证其来源。请特别注意以下内容:

仅向此类 API 传递您的应用程序先前生成并自行持久化的数据(通常通过QSettings 实现),或者完全由您的应用程序控制的数据。

文章和指南

示例

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.