用户界面

Qt 有多种用于创建用户界面的特色技术。虽然根据需要混合和匹配这些不同技术是可能的,但一种方式通常比其它方式更适于某种类型的用户界面。 Qt Creator 是很好的应用程序范例,组合传统 Qt Widgets with Qt Quick 。Widget 形成用户界面的基础,而 Qt Quick 则用于实现欢迎模式,例如。以下章节提供用于创建用户界面的可用技术的简要介绍,和提供帮助选取最合适技术的比较表。

常见重要 UI 话题

QML 图形用户界面

QML 允许开发者以声明方式,构建用户界面。具体来说,用户界面受益于复合 QML 对象和使用特性绑定配置它们的简单性。

Qt Quick 是提供用于创建用户界面 (譬如:具有自己坐标系统和渲染引擎的可视画布) 的 QML 类型的模块。动画和过渡效果是 Qt Quick 的第一类概念,且视觉效果可以透过专用组件增补 (对于粒子和着色器效果而言)。

重要 QML 应用程序 UI 话题

图形控件

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 用户界面 页面。

基于 Widgets 的用户界面

Qt Widgets 通常是在桌面环境下,找到的传统用户界面元素。Widget 被很好地集成到底层平台,在 Windows、Linux 和 macOS 提供本机外观。Widget 是成熟的,且用户界面元素特征丰富,适于大多数静态用户界面。相比 Qt Quick ,Widget 无法很好地适应触摸屏和流畅、高度动画化的现代用户界面的伸缩要求。对于以传统桌面为中心的用户界面的应用程序 (譬如:办公类型的应用程序) 而言,Widget 是不错的选择。

重要 Qt Widgets 概念

可视化数据

Qt 提供现成 C++ 类和 QML 类型,用于以图表和图形形式可视化数据 (众所周知,这是分析数据的最佳方式)。 Qt Charts and Qt Data Visualization 是使采用 2D 和 3D 模型可视化数据成为现实的 2 个 Qt 附件。

显示 Web 内容

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 翻译工具以完成其任务。