介绍
Qt 是一套跨平台 C++ 图形界面(GUI)开发框架,由挪威 Trolltech 公司创立,现归属 The Qt Company。
不仅可以开发桌面图形程序,还支持嵌入式、移动端、服务器后台开发,一次编码,多平台编译运行是它最大优势。
核心语言:C++;同时提供 QML(类似JS+JSON)用于快速开发现代化触屏界面;支持 Python 绑定(PyQt / PySide)。
支持平台
- 桌面:Windows、Linux(X11/Wayland)、macOS
- 嵌入式:Embedded Linux、QNX、VxWorks、Android Automotive
- 移动端:Android、iOS
- 实时系统:FreeRTOS 等
两大开发体系
1. Qt Widgets(传统界面)
- 基于原生控件封装:按钮、输入框、表格、菜单栏等
- 适合传统桌面软件、工控上位机、工具软件
- 优点:成熟稳定、学习资料极多;缺点:界面样式偏传统,移动端适配差
2. Qt Quick(QML 现代化界面)
- 使用 QML 声明式语法,搭配 JavaScript 逻辑,C++做底层业务
- 适合触屏程序、嵌入式人机界面(HMI)、移动端、炫酷动态UI
- 优势:动画流畅、界面高度自定义;工业HMI、车载系统大量使用
特色
信号与槽(Signal & Slot)
Qt 独有的对象通信机制,替代回调函数,实现组件间解耦通信,是Qt最核心特性。connect(按钮, &QPushButton::clicked, this, &MainWindow::onClick);元对象系统(Meta-Object System)
依托moc(Meta Object Compiler 元对象编译器)实现:信号槽、运行时类型识别RTTI、属性系统、动态翻译。注意:使用信号槽的类必须继承
QObject,并添加宏Q_OBJECT。完整内置组件库
文件操作、网络(TCP/UDP/HTTP)、串口、数据库(SQLite/MySQL等)、XML/JSON、多线程、定时器、图形绘制、音视频、打印、国际化翻译,无需大量第三方库。跨平台抽象层
统一API,屏蔽不同操作系统底层差异。同一套代码,在Windows和Linux分别编译即可生成对应可执行文件。国际化(i18n)
自带翻译工具lupdate/lrelease,轻松做多语言软件。
常用工具链
- Qt Creator:官方IDE,编辑器+调试+UI设计器,跨平台免费使用
- Qt Designer:拖拽式可视化UI设计工具(Widgets界面)
- qmake / CMake:两种构建系统(新版本Qt主推CMake)
- moc、uic、rcc:Qt专用预处理工具
授权协议(重要)
Qt 采用 双协议模式:
开源 GPL / LGPL
- LGPL:动态链接Qt,程序可以闭源商用;发布时提供Qt库修改源码
- GPL:程序整体强制开源
商业商业许可证
无开源传染限制,适合闭源商用产品(车载、工控设备等)PySide 采用 LGPL;PyQt 采用 GPL,商用需要购买 Riverbank 授权。
典型应用场景
✅ Windows/Linux/macOS 桌面工具软件
✅ 工业嵌入式 HMI、工控上位机
✅ 车载中控、医疗设备界面
✅ 跨平台视频播放器、编辑器
✅ 移动端APP(Android/iOS)
知名软件例子:VLC、WPS Linux版、VirtualBox、KDEShell、科大讯飞部分终端软件
Qt版本区分
- Qt5:长期广泛使用,生态成熟,大量老项目;稳定版本 5.15(LTS)
- Qt6:新一代主线,架构重构、图形渲染升级、更好支持高DPI、统一3D/2D渲染,推荐新项目使用;6.5、6.8为LTS长期支持版本
优缺点
优点
- 真正一站式跨平台,UI+业务+网络+数据库全套组件
- C++高性能,适合嵌入式、实时场景
- Widgets稳定;QML能做出精致动态界面
- 成熟社区,中文资料丰富
缺点
- 发布程序打包体积偏大(需要附带Qt运行库)
- 相比原生SDK,极致系统底层能力调用需要额外封装
- QML入门容易,复杂大型项目架构需要规范管理