Qt:跨平台 C++ 图形界面

介绍

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、车载系统大量使用

特色

  1. 信号与槽(Signal & Slot)
    Qt 独有的对象通信机制,替代回调函数,实现组件间解耦通信,是Qt最核心特性。

    connect(按钮, &QPushButton::clicked, this, &MainWindow::onClick);
    
  2. 元对象系统(Meta-Object System)
    依托 moc(Meta Object Compiler 元对象编译器)实现:信号槽、运行时类型识别RTTI、属性系统、动态翻译。

    注意:使用信号槽的类必须继承 QObject,并添加宏 Q_OBJECT。

  3. 完整内置组件库
    文件操作、网络(TCP/UDP/HTTP)、串口、数据库(SQLite/MySQL等)、XML/JSON、多线程、定时器、图形绘制、音视频、打印、国际化翻译,无需大量第三方库。

  4. 跨平台抽象层
    统一API,屏蔽不同操作系统底层差异。同一套代码,在Windows和Linux分别编译即可生成对应可执行文件。

  5. 国际化(i18n)
    自带翻译工具 lupdate/lrelease,轻松做多语言软件。

常用工具链

  • Qt Creator:官方IDE,编辑器+调试+UI设计器,跨平台免费使用
  • Qt Designer:拖拽式可视化UI设计工具(Widgets界面)
  • qmake / CMake:两种构建系统(新版本Qt主推CMake)
  • moc、uic、rcc:Qt专用预处理工具

授权协议(重要)

Qt 采用 双协议模式:

  1. 开源 GPL / LGPL

    • LGPL:动态链接Qt,程序可以闭源商用;发布时提供Qt库修改源码
    • GPL:程序整体强制开源
  2. 商业商业许可证
    无开源传染限制,适合闭源商用产品(车载、工控设备等)

    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长期支持版本

优缺点

优点

  1. 真正一站式跨平台,UI+业务+网络+数据库全套组件
  2. C++高性能,适合嵌入式、实时场景
  3. Widgets稳定;QML能做出精致动态界面
  4. 成熟社区,中文资料丰富

缺点

  1. 发布程序打包体积偏大(需要附带Qt运行库)
  2. 相比原生SDK,极致系统底层能力调用需要额外封装
  3. QML入门容易,复杂大型项目架构需要规范管理

原文出处:/show_1EF6CbRBR2Ro.html