Qt6 Framework简介
Qt6.5 LTS 于 2023年4月3日 正式发布 ,Qt 6.5 是 Qt 6 的第二个 LTS 版本 ,标志着 Qt6 正式进入可用时代。
使用Qt6的优点:
- Qt渲染硬件接口:支持Direct 3D、Metal、Vulkan和OpenGL。只需编写一次渲染代码,即可部署在任何硬件上。
- Qt Quick 3D:整合2D和3D内容到一个技术栈上。
- Qt Quick Controls 2桌面样式:像素级完美、原生外观的控件无缝集成入操作系统。
- HiDPI支持:独立缩放的支持,针对不同的显示器配置自动缩放UI。
- QProperty系统:通过C++中的绑定支持提高代码速度,将QML最好用部分带入Qt,并与QObject无缝集成。
- 并发API的改进:多核CPU、并行计算、保持用户界面流畅的同时在后台执行后端逻辑。自动根据硬件进行线程数量管理。
- 网络功能的改进:创建您自己的通信后端,并将其集成到默认的Qt工作流中,自动添加与安全性相关的功能。
- 3D微粒系统:在 Qt Quick 3D 或 Qt Design Studio 中自定义您的3D微粒。
- Qt Creator中的Qt覆盖测试:分析C++和QML代码的测试和代码覆盖率。
- 顶点动画:使用网格变形模拟软材料的变形或使用骨骼动画抽象表示模型的运动。
- CMake支持:凭借行业标准构建系统、丰富的功能集以及庞大的生态体系构建Qt应用程序。
- Qt for Microcontrollers (MCUs):轻量级渲染引擎可在具有2D硬件加速的低成本硬件上部署基于QML的UI,从而以最小的占用空间(> 80KB内存)实现最佳图形性能。
- 更新到C++17, Qt6.4之后支持C++20
Qt6 Framework模块
下面我们一起看一下 Qt6 Framework都有哪些模块组成:
基础模块
基础模块 | 作用 | |
---|---|---|
Qt Core | 提供其他模块使用的非图形化类. | |
Qt D-Bus | 封装了使用 D-Bus 协议进行进程间通信的类. | |
Qt GUI | 用于创建图形用户界面的基础类. | |
Qt Network | 让网络编程更易于移植的类. | |
Qt QML | 用于 QML 和 JavaScript 语言的类. | |
Qt Quick | 用于创建具有自定义用户界面的动态应用程序的声明性框架 | |
Qt Quick Controls | 用于创建桌面、嵌入式和移动设备的高效用户界面的轻量级 QML的Types | |
Qt Quick Dialogs | 在 Qt Quick 应用程序中创建和交互系统对话框的Types | |
Qt Quick Layouts | 用于在用户界面中排列 Qt Quick 条目的布局 | |
Qt Quick Test | 一个 QML 应用程序的单元测试框架,其测试用例使用JavaScript书写 | |
Qt Test | 用于单元测试 Qt 应用程序和库的类. | |
Qt Widgets | Qt GUI的扩展类 (使用c++). |
插件模块
模块 | 作用 |
---|---|
Active Qt | 用于创建/显示微软ActiveX组件&&COM组件的类. |
Qt 3D | 用于支持2D和3D渲染的近实时模拟系统功能. |
Qt 5 Core Compatibility APIs | 用于兼容Qt5 Core的接口 |
Qt Bluetooth | 提供对蓝牙硬件的访问. |
Qt Charts | UI组件,用于显示由静态或动态数据模型驱动的有一定视觉效果的表格 |
Qt Concurrent | 用于处理多线程程序,而不使用低级线程原语的类 |
Qt Data Visualization | UI组件,用于创建令人惊叹的3D数据可视化 |
Qt Help | 用于将文档集成到应用程序中的类 |
Qt Image Formats | 用于附加图像格式的插件:TIFF、MNG、TGA、WBMP等 |
Qt Lottie Animation | 渲染以JSON格式导出的图形和动画的QML API,其接口json由Adobe After Effects的Bodymovin插件导出. |
Qt OpenGL | 使在Qt应用程序中使用OpenGL变得容易的C++类 |
Qt Multimedia | 一组丰富的QML类型和C++类,用于处理多媒体内容。还包括访问相机硬件的API. |
Qt Network Authorization | 提供对基于OAuth的在线服务的授权支持. |
Qt NFC | 提供对近场通信(NFC)硬件的访问. |
Qt Positioning | 提供对位置、卫星信息和区域监视类的访问. |
Qt Print Support | 使打印更加容易和可移植的类. |
Qt Quick 3D | 提供一个基于Qt Quick创建3D内容或UI的高级API |
Qt Quick Timeline | 启用基于关键帧的动画和参数化. |
Qt Quick Widgets | 提供用于显示Qt Quick用户界面的C++窗口小部件类 |
Qt Remote Objects | 提供一种简单易用的机制,用于在进程或设备之间共享QObject的API(属性/信号/槽). |
Qt SCXML | 提供从SCXML文件创建状态机并将其嵌入应用程序的类和工具 |
Qt Sensors | 提供对传感器硬件的访问 |
Qt Serial Bus | 提供对串行工业总线接口的访问。目前,该模块支持CAN总线和Modbus协议 |
Qt Serial Port | 提供与硬件和虚拟串行端口交互的类 |
Qt Shader Tools | Qt跨平台着色器管道的工具,使得在Qt Quick和Qt生态系统中使用图形和计算着色器变得容易 |
Qt SQL | 使用SQL进行数据库集成的类。 |
Qt State Machine | 用于创建和执行状态图的类。 |
Qt SVG | 用于显示SVG文件内容的类。支持SVG 1.2 Tiny标准的一个子集。 |
Qt UI Tools | 在由Qt Designer创建的基于QWidget的窗体中动态加载的类,以便在运行时动态加载。 |
Qt Wayland Compositor | 提供一个框架,用于开发Wayland合成器。 |
Qt WebChannel | 提供对HTML客户端中的QObject或QML对象的访问,以便将Qt应用程序与HTML / JavaScript客户端无缝集成。 |
Qt WebEngine | 用于使用Chromium浏览器项目在应用程序中嵌入Web内容的类和函数。 |
Qt WebSockets | 提供符合RFC 6455的WebSocket通信。 |
Qt WebView | 通过使用本地于平台的API,而无需包含完整的Web浏览器堆栈,在QML应用程序中显示Web内容。 |
Qt Virtual Keyboard | 实现不同输入方法以及QML虚拟键盘的框架。 |
Qt XML | 提供XML的SAX和DOM标准的实现。 |
额外的Qt库
模块 | 作用 |
---|---|
Qt Quick TreeView | 提供一个控件来在Qt Quick中显示树形模型. |
Qt Quick Calendar | 提供一组类型,用于在Qt Quick中构建日历. |
Qt Quick MultiEffect | 提供一个Qt Quick组件,用于快速制作动画效果. |
Qt Digital Advertising | 提供一个轻量级API,用于将广告集成到Qt Quick应用程序中. |
Qt VNC Server | 提供一个API,用于创建一个简单的与VNC兼容的服务器. |
Qt Application Manager | 一个无头应用程序管理器守护程序,专门设计用于具有复杂UI的嵌入式Linux系统. |
Qt Interface Framework | 提供一个核心框架和工具,用于实现中间件API、后端和服务. |
总结:
- Qt6的开发支持使用最新的c++特性
- Qt6将默认构建系统更改为了cmake
- Qt6提供更全面的QML支持,以后使用QtQuick开发将会成为主流
参考:
https://doc.qt.io/qt.html