Qt是一个基于C++的跨平台软件开发框架。它为应用程序开发者提供建立艺术级图形用户界面所需的功能。
Qt是digital公司的产品。1996年,Qt进入商业领域,已经成为全世界范围内数千种成功的应用程序的基础。他也是目前流行的Linux的桌面环境KDE的基础,KDE是Linux发行版的主要一个标准组件。
一、 产品特点
- 完整的开发套件
Qt是完整的C ++软件开发套件。包含了构建软件所需的工具和构建块,无需担心赖关系。
- Qt类库
Qt已拥有超过1300多个 C++类库,同时不断在扩展。它封装了用于端到端应用程序开发所需要的所有基础结构。Qt应用程序接口包括成熟的对象模型,内容丰富的集合类,图形用户界面编程与布局设计功能,数据库编程,网络,XML,国际化,OpenGL等等。
- Qt设计者
Qt有一个功能强大的GUI布局与窗体构造器,能够在所有支持平台上,以本地化的视图外观,快速开发高性能的用户界面。
- Qt语言包
用来消除国际化工作流程中所带来障碍的工具。使用Qt语言包,可为您免除语言翻译,货币换算,日历格式等相关的麻烦。
- 跨平台的Qt
Qt是用于跨平台应用开发的领先开发框架。Qt应用程序接口与工具兼容于所有支持平台,让开发员掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置。Qt的宗旨是“一套代码,到处部署”。
Qt开发主机的操作系统
Android, iOS, Windows, WinRT, macOS, Linux, X11
Qt支持的目标操作系统
桌面/移动端:
- 桌面端:Windows, Linux, Mac OS X, Enterprise UNIX
- 国产Linux系统:Kylin, UOS, RedFlag等
- 移动端:Android, IOS, Windows 10, WinRT, UWP
嵌入式系统:
- Embedded Linux, Windows Embedded
- RTOS: QNX, VxWorks, INTEGRITY
- 国产RTOS: ReWorks, Delta OS, SylixOS
单片机系统(MCU):
- 裸跑(Bare metal), FreeRTOS
二、 Qt6新特性
Qt6是Qt的新版本。对Qt5做了重大的革新以满足未来应用程序开发框架的技术发展方向。
- 使用设计师和开发者易用的工具、更精简但强大的QML语言以及灵活的图形架构,打造定制的或原生风格的2D和3D应用,实现高品质的体验。
- 从微控制器(MCU)到超级计算机,Qt 6系列和Qt庞大的生态系统提供了整个产品线的设计、开发和部署所需的一切。一套代码适用于各种硬件、操作系统或裸机,创建前端美观、后端强大的应用程序。
- 全面支持新的C++17特性
2.1 Qt6功能模块
开发工具 |
Qt Creator Qt Creator提供了一个跨平台的、完整的集成开发环境(IDE)。 |
Boot to Qt Boot to Qt可以帮助您立即在目标硬件上进行原型设计。 使用这个功能,您可以通过Qt Creator将所有类型的Qt应用程序部署到真实的设备中。 |
QML Live QML Live允许您更改QML用户界面源代码并实时查看结果。 |
Qt Linguist Qt Linguist允许翻译人员在应用程序中翻译文本。 |
Emulator 您可以使用模拟器在与设备完全相同的条件下测试和调试应用程序。 |
makeqpf makeqpf是一个用于生成QPF2格式的预渲染字体的工具,以便在嵌入式Linux上使用。 |
Meta-Object Compiler 元对象编译器为Qt自己的子类生成元对象代码。 |
User Interface Compiler 该工具读取由Qt Designer生成的XML格式UI定义文件,并创建一个c++头文件。 |
Resource Compiler 该工具通过生成c++源文件在构建过程中将资源嵌入到Qt应用程序中。 |
Qt D-Bus XML Compiler 该编译器将D-Bus信息转换成c++源代码。 |
Qt D-Bus Viewer Qt D-Bus查看器是一个可以让您自检D-Bus对象和消息的工具。 |
Qt Visual Studio Tools Qt Visual Studio工具使开发人员能够使用Microsoft Windows开发环境。 |
Qt Distance Field Generator Qt Distance Field Generator可以用来预生成字体缓存,以提高加载时间。 |
Qt Assistant Qt Assistant是一个查看Qt帮助文件格式的在线文档的工具。 |
ESSENTIALS |
Qt Core Qt Core 包括元对象系统、属性系统、对象模型等的库和api等。 |
Qt GUI Qt GUI模块提供了窗口系统集成、2D和3D图形、成像、字体和文本类。 |
Qt QML Qt QML模块提供了使用QML语言开发应用程序和库的框架。 |
Qt Quick Qt Quick是一个声明式框架,用于使用自定义用户接口构建高度动态的应用程序。 |
Qt Multimedia Qt Multimedia包括音频,视频,收音机和相机功能类。 |
Qt Network Qt Network为使用TCP/IP的应用程序提供了一组API。 |
Qt Quick Dialogs 用于从Qt Quick应用程序创建系统对话框并与之交互的类型。 |
Qt Quick Layouts Layouts用于在用户界面中安排基于Qt Quick 2组件的布局。 |
Qt Quick Controls 提供轻量级的QML类型,用于为桌面、嵌入式和移动设备创建性能用户界面。 |
Qt Quick Test QML应用程序的单元测试框架,其中的测试用例被编写为JavaScript函数。 |
Qt SQL Qt SQL是一个支持SQL数据库的模块。 |
Qt Test Qt Test包括用于Qt应用程序和库单元测试的类。 |
Qt Widgets 用c++ widgets扩展Qt GUI的类。 |
Qt Shader Tools Qt Shader Tools提供了为硬件加速图形创建shades的方法。 |
Qt 3D 支持2D和3D渲染的近实时仿真系统的功能。 |
Qt Bluetooth 提供对蓝牙硬件的访问。 |
Qt Concurrent 用于编写不使用低级线程原语的多线程程序的类。 |
Qt D-Bus D-Bus协议上用于进程间通信的类。 |
Qt Help 用于将文档集成到应用程序中的类,类似于Qt Assistant。 |
Qt Image Formats 附加图像格式的插件:TIFF, MNG, TGA, WBMP。 |
Qt NFC 提供近场通信(NFC)硬件访问。 |
Qt Platform Headers 提供封装特定于平台信息的类,绑定到平台插件的给定运行时配置。 |
Qt Positioning 提供对位置、卫星和区域监控类的访问。 |
Qt Print Support 使打印更容易和更便携的类。 |
Qt Quick Controls 可重用的基于Qt Quick的UI控件,创建经典的桌面风格的用户界面。 |
Qt Quick Extras 提供一组专门的控件,可用于在Qt Quick中构建接口。 |
Qt Quick Timeline 启用基于关键帧的动画和参数化。 |
Qt Quick Widgets 提供一个显示Qt Quick用户界面的C++ widget类。 |
Qt Remote Objects 提供一种易于使用的机制,用于在进程或设备之间共享QObject的API(属性/信号/槽)。 |
Qt Safe Renderer 提供可用于呈现安全关键项(如警告指示器)的UI呈现组件。 |
Qt SCXML 提供用于从SCXML文件创建状态机并将其嵌入应用程序的类和工具。 |
Qt Sensors 提供访问传感器硬件和动作手势识别。 |
Qt Serial Bus 提供访问串行工业总线接口。目前该模块支持CAN总线和Modbus协议。 |
Qt Serial Port 提供对硬件和虚拟串口的访问。 |
Qt SVG 用于显示SVG文件内容的类。支持SVG 1.2 Tiny标准的一个子集。 |
Qt UI Tools 用于加载运行时在Qt Designer中动态创建的基于QWidget的表单的类。 |
Qt WebChannel 提供从HTML客户端访问QObject或QML对象,以实现Qt应用程序与HTML/JavaScript客户端无缝集成。 |
Qt WebEngine 使用Chromium浏览器项目在应用程序中嵌入web内容的类和函数。 |
Qt WebSockets 提供与RFC 6455兼容的WebSocket通信。 |
Qt WebView 在QML应用程序中显示web内容,使用平台本地的api,而不需要包含完整的web浏览器堆栈。 |
Qt XML SAX和DOM的c++实现。 |
Qt Charts UI组件用于显示视觉上令人满意的图表,由静态或动态数据模型驱动 |
Qt Data Visualization 用于创建绝妙的3D数据可视化的UI组件。 |
Qt Lottie Animation 一个用于渲染JSON格式的图形和动画的QML API,由Adobe®After Effects的Bodymovin插件导出。 |
Qt Network Authorization 支持基于OAuth的在线服务授权。 |
Qt Virtual Keyboard 一个实现不同输入法的框架以及一个QML虚拟键盘。支持本地化键盘布局和自定义视觉主题。 |
Qt Wayland Compositor 提供一个开发Wayland合成器的框架。 |
Qt for WebAssembly 一个使用WebAssembly为web浏览器编译Qt应用程序的平台目标。 |
Qt Quick 3D 提供基于Qt Quick创建3D内容或UI的高级API。 |
Active Qt Active Qt 支持Windows开发者使用ActiveX和COM。 |
2.2 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工作流中,自动添加与安全性相关的功能。
更新到C++17
更新到新标准,提高代码的可读取性,更好性能和更容易维护。
CMake支持
凭借行业标准构建系统、丰富的功能集以及庞大的生态体系构建Qt应用程序。
Qt for Microcontrollers (MCU)
轻量级渲染引擎可在具有2D硬件加速的低成本硬件上部署基于QML的UI,从而以较小的占用空间(> 80KB内存)实现优秀的图形性能。
Active Qt
支持Windows上的COM和ActiveX控件的Qt模块
Qt Charts
将图表添加到应用程序
Qt Data Visualization
可视化静态和动态数据
Qt Device Utilities
仅用于Qt for Device Creation部分
Qt Graphical Effects
添加为兼容性模块,以帮助移植到Qt 6
Qt Lottie
渲染在Adobe After Effects中创建的图形和动画
Qt Virtual Keyboard
在嵌入式设备中添加虚拟键盘