本页内容

用户界面

Qt 框架的主要用户界面技术包括 Qt Quick 以及 Qt Widgets。Qt Quick 界面流畅、动态,最适合用于触摸界面。Qt Widgets 用于创建复杂的桌面应用程序。您可以创建具有目标平台原生外观和感觉的Qt Quick 和Qt Widgets 界面。

使用Qt Quick

Qt Quick 旨在创建动态且流畅的用户界面。 Qt Quick Controls 模块提供了按钮、对话框和菜单等 QML 控件。您可以使用声明式语言QML 构建用户界面,并使用 JavaScript 实现业务逻辑。

以下列表包含相关概述:

Qt Widgets 用户界面

Qt Widgets 是桌面环境中典型的用户界面元素。这些控件与底层平台集成良好,可在 Windows、Linux 和 macOS 上提供原生的外观和操作体验。这些控件是成熟且功能丰富的用户界面元素,主要适用于传统用户界面。与 Qt Quick,这些控件适用于开发大型桌面应用程序,而较少适用于创建具有流畅界面的触控导向型应用程序。

以下列表包含关于Qt Widgets 的相关概述:

UI 技术的比较

下表对Qt Quick 和Qt Widgets 进行了对比,重点介绍了它们的优势、局限性以及理想的适用场景:

功能Qt Quick 及Qt Quick ControlsQt Widgets说明
主要编程语言QML 和 JavaScriptC++Qt Quick 是声明式的。Qt Widgets 是命令式的,属于经典的 C++。
原生外观和感觉是(通过Qt Quick Controls 样式实现)。是(原生桌面控件)。两者均支持在目标平台上呈现原生外观和感觉。
自定义样式是(可自定义样式、自定义 QML 组件)。是(Qt 样式表)。这两个框架都允许通过不同的机制进行广泛的自定义样式设置。
流畅的动画和过渡效果是(内置 GPU 加速动画)。有限(通过QPropertyAnimation 支持,但并非为流畅的UI动画而设计)。Qt Quick 专为动画化的现代用户界面而设计。Qt Widgets 则并非如此。
触控支持是(专为触控和手势设计)。有限(虽然存在触摸事件,但Qt Widgets 默认采用鼠标和键盘输入)。Qt Quick 在处理多模式输入方面表现更佳。Qt Widgets 需要更多手动操作才能实现良好的触控用户体验。
行业标准控件是(提供常见的桌面控件,且自定义组件可实现任何所需的小部件)。是(提供丰富、成熟且即用的桌面控件)。Qt Quick 可以实现所有类型的桌面控件,但Qt Widgets 开箱即用时包含更广泛的传统控件集。
模型/视图编程是(通过基于委托的视图(如ListView 和TableView )提供灵活的模型支持)。是(提供全面的经典 MVC 视图集,包括QTableView 、QListView 和QTreeView )。这两种技术都支持强大的模型/视图编程。Qt Quick 使用委托来清晰地将数据与呈现分离,而Qt Widgets 则提供了一套大量成熟且现成的模型/视图类。
快速 UI 原型设计是(在 QML 中迭代速度非常快)。是(对于传统用户界面而言速度很快,尤其是配合 Qt Widgets Designer)。Qt Quick 特别适合快速可视化原型设计,而Qt Widgets 允许使用Qt Widgets Designer 快速组装经典的桌面界面。
硬件加速图形是(通过Qt Quick 场景图实现GPU加速)。部分支持(小部件在软件中渲染。支持 OpenGL 小部件,但处于隔离状态)。仅Qt Quick 提供内置的全场景GPU加速。更多信息请参阅“图形”部分。
Graphical Effects是(基于着色器的模糊、发光、阴影、色彩效果等)。有限(仅通过 Qt GUI )。Qt Quick 提供丰富的、由 GPU 驱动的视觉效果。Qt Widgets 仅提供简单的 CPU 效果。
富文本处理。是(Qt XML 的富文本文档类可在Qt Quick 和Qt Quick Controls 的TextArea 中使用,但可能需要一些 C++ 实现)。是(通过QTextDocument 、QTextEdit 及相关类提供全面支持)。这两种技术均可用于构建复杂的文本编辑器。Qt Quick 通过QTextDocument 与 Qt 的富文本引擎集成,而Qt Widgets 则提供了一套成熟的、可直接使用的文本处理类。

注意:您 可以在Qt Widgets 用户界面中显示 QML 视图。有关详细信息,请参阅Qt Quick 控件。

以下页面包含有关设计和开发用户界面的更多信息:

© 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.