Qt 6 QML Book是关于 QML 和相关主题的,例如如何将 C++ 和 Python 等语言集成到 QML、Qt for MCU 产品等。自上次更新以来已经过去了几个月,所以我们将讨论自上次更新以来发生的事情。如果您想立即开始阅读,可以在此处找到免费的在线图书。
用于 MCU 的 Qt
本书最重要的补充是关于 Qt for MCUs 的部分。现代用户界面在今天无处不在,因此,用户期望越来越小设备的流畅、基于触摸的用户界面。从微控制器类设备驱动用户界面是可行的,但通常很复杂。这就是 Qt for MCU 和 Qt Quick Ultralite 发挥作用的地方。它结合了 Qt Quick 和 QML 的便利性,以及在非常小的系统上运行的能力,这些系统资源受限,无法运行 Linux 或 Qt 传统上针对的其他操作系统。
用于 MCU 的 Qt 已经存在了一段时间,最近达到了 2.0 版。为了更轻松地开始使用 Qt for MCU,我们最近在 Qt 6 书中添加了一个关于该主题的章节,我们在其中介绍了环境设置和一些典型用例。
用于 MCU 的 Qt 以裸机或小型实时操作系统(如 FreeRTOS)为目标。这意味着应用程序的占用空间要小得多,但也意味着环境受到更多限制。Qt 和 Qt for MCU 之间的一些主要区别是:
- Qt for MCUs只是一个前端框架。程序必须依赖 STL 和其他 3rd 方库来实现经典的非图形 Qt 模块提供的功能。
- Qt for MCUs将 QML 编译为最小化的二进制文件,这意味着板载没有 QML 解释器。这要求对事物进行更严格的定义,减少动态性,并且在处理动态数据时需要注意。
- 用于 MCU 的 Qt 附带Qt Quick Ultralite,它是 Qt Quick 的子集。
一般来说,考虑到目标系统的能力,上述所有限制都不会限制开发。但是,需要了解它们并能够处理它们暗示的警告。这在参考文档中有详细描述。在 Qt 6 Book 中,限制及其解决方案是在示例的上下文中提出的。
这些示例由简单的“Hello World”构建而成,包括演示如何混合 C++ 和 QML 以交换属性、信号和函数调用,以及用于填充视图的 C++ 模型示例QML 方面。
与经典的 Qt 代码库相比,最大的变化之一是不再使用 QObject 基类。相反,提供了几个用于创建信号、属性、模型等的类。这些类基于现代 C++,不涉及元对象编译器。同时,一个新的编译器用于提取有关从 C++ 向 QML 公开的接口和模型的元信息,以及一个用于将 QML 转换为 C++ 的编译器。这意味着运行时的动态代码略少,但占用空间更小,并且对于较小的嵌入式目标有更好的结果。
本章还讨论了构建环境。由于用于 MCU 的 Qt 在将 QML 部署到目标之前将其编译为 C++,因此有许多 CMake 宏用于注册接口、编译 QML 等。
Qt 快速形状
另一个新章节涵盖了 Qt Quick Shapes 模块。该模块允许您在 QML 中创建和使用基于路径的形状。这使 QML 超越了矩形,进入了自由形状的领域。
使用预渲染图形或 SVG 来实现分辨率独立性是可能的。但是,使用 Qt Quick Shapes 模块,您可以使用 QML 的绑定直接修改形状。这使您可以即时调整形状、位置、颜色和任何其他您能想到的属性。这包括能够使用 QML 动画。
新章节补充了旧的 Canvas 章节。Canvas 模块仍然存在,并提供来自浏览器画布的 API,这对于将 Javascript/Web 可视化工具集成到 QML 场景中非常方便。
下一步
本书目前的发展是创建一个关于 Qt Quick 3D 的部分,这是一个很大的主题,对本书来说是新的。目的是逐步创建对该主题的介绍,以便轻松开始学习该主题。
有许多以更正和错误报告的形式做出的贡献——这些都非常感谢,并将在本书的下一个版本之前解决。谢谢!
转自 https://www.qt.io/blog/qt-6-book-updates