Qt 有多种用于创建用户界面的特色技术。虽然根据需要混合和匹配这些不同技术是可能的,但一种方式通常比其它方式更适于某种类型的用户界面。 Qt Creator 是很好的应用程序范例,组合传统 Qt Widgets with Qt Quick 。Widget 形成用户界面的基础,而 Qt Quick 则用于实现欢迎模式,例如。以下章节提供用于创建用户界面的可用技术的简要介绍,和提供帮助选取最合适技术的比较表。
QML 允许开发者以声明方式,构建用户界面。具体来说,用户界面受益于复合 QML 对象和使用特性绑定配置它们的简单性。
Qt Quick 是提供用于创建用户界面 (譬如:具有自己坐标系统和渲染引擎的可视画布) 的 QML 类型的模块。动画和过渡效果是 Qt Quick 的第一类概念,且视觉效果可以透过专用组件增补 (对于粒子和着色器效果而言)。
Qt Quick Controls module (since Qt 5.7) provides lightweight QML types for creating performant user interfaces. These controls achieve improved efficiency by employing a simplified styling architecture.
有关如何采用 QML 创建应用程序用户界面的更多信息,拜访 QML 用户界面 页面。
Qt Widgets 通常是在桌面环境下,找到的传统用户界面元素。Widget 被很好地集成到底层平台,在 Windows、Linux 和 macOS 提供本机外观。Widget 是成熟的,且用户界面元素特征丰富,适于大多数静态用户界面。相比 Qt Quick ,Widget 无法很好地适应触摸屏和流畅、高度动画化的现代用户界面的伸缩要求。对于以传统桌面为中心的用户界面的应用程序 (譬如:办公类型的应用程序) 而言,Widget 是不错的选择。
Qt 提供现成 C++ 类和 QML 类型,用于以图表和图形形式可视化数据 (众所周知,这是分析数据的最佳方式)。 Qt Charts and Qt Data Visualization 是使采用 2D 和 3D 模型可视化数据成为现实的 2 个 Qt 附件。
Qt 提供基于 Chromium 的 WebEngine 布局引擎,它允许您将 Web 内容嵌入到 Qt 应用程序中。引擎可以被集成到基于 Qt Widget 和基于 Qt Quick 的应用程序中。
有关在 Qt 中支持 Web 内容的更多信息,见 集成 Web 内容 .
选取合适技术用于构建用户界面,并不总是那么容易。取决于几个变量,譬如:在工程中使用其它技术或由于目标平台约束。在某种程度上,可以使用 3 种可用技术中的任何一种实现下表中的许多项。下表旨在帮助您选取最适合这项工作的工具。
Qt Quick / Qt Quick Controls | Qt Widgets | Qt WebEngine | 注释 | |
---|---|---|---|---|
使用语言 | QML/JS | C++ | HTML/CSS/JS | |
本机外观和感觉 |
![]() |
![]() |
Qt Widgets 和 Qt Quick Controls 1 被很好地集成到基础平台,在 Windows、Linux 和 macOS 提供本机外观和感觉。 | |
自定义外观和感觉 |
![]() |
![]() |
![]() |
Qt Widgets 提供凭借样式表定制的手段,但对于那些不希望看起来像本机的用户界面而言,Qt Quick 是更佳性能的选择。 |
流畅动画 UI |
![]() |
![]() |
Qt Widgets 无法很好地适应动画伸缩。Qt Quick 提供了按声明方式实现动画的方便且自然方式。 | |
触摸屏 |
![]() |
![]() |
Qt Widgets 经常要求鼠标光标为良好交互,而 Qt Quick 仅提供基于触摸交互的原语设计构建块。 WebView Qt Quick 组件支持多点触摸手势,来与 Web 内容交互。 | |
标准行业 Widget |
![]() |
Qt Widgets 提供用于构建标准行业类型应用程序所需,经 20 多年发展的所有花哨功能。Qt WebEngine Widgets 提供 Widget 和其它类以渲染 Web 内容并与之交互。 | ||
模型/视图编程 |
![]() |
![]() |
Qt Quick 提供方便视图,但 Qt Widgets 提供更方便且完整的框架。除 Qt Quick 视图外,Qt Quick Controls 还提供 TableView . | |
敏捷 UI 开发 |
![]() |
![]() |
![]() |
Qt Quick 是敏捷 UI 原型设计和开发的绝佳抉择。 |
HW (硬件) 加速图形 |
![]() |
![]() |
![]() |
Qt Widgets 提供用于渲染 OpenGL 图形的 QGLWidget,而 Qt WebEngine 支持 WebGL,但基于 OpenGL ES 2.0 或 OpenGL 2.0 的 Qt Quick 场景图形 已被证明能为 UI 和集成 OpenGL 内容提供最佳性能。 |
图形效果 |
![]() |
Qt Quick 中的可用粒子系统和着色器效果更灵活。Qt Widgets 在此领域提供的很少。 | ||
富文本处理 |
![]() |
![]() |
目前,Qt Widgets 为实现文本编辑器提供最综合基。Qt 的富文本文档类还可以用于 Qt Quick 和 Qt Quick Controls 的 TextArea ,但可能要求一些 C++ 实现。 | |
现有 Web 内容 |
![]() |
Qt Quick 和 Qt Widgets 两者都提供组件用于呈现 简单富文本 ,但 Qt WebEngine 是呈现完全成熟 Web 内容的最佳选择。 |
Qt 为把应用程序翻译成本地语言提供了出色的支持。发行管理者、翻译者及开发者可以使用 Qt 翻译工具以完成其任务。