Qt 简介
Qt 是什么
Qt 是一个跨平台的 C++ 图形用户界面库,也是一个应用程序开发框架。Qt 提供给开发者建立图形用户界面所需的功能,包含一整套高度直观、模块化的 C++ 库类,并加载可简化应用程序开发的 API。Qt 可生成高可读、易维护和可重用的代码,具有较高的运行时性能,且内存占用小。最重要的是,Qt是跨平台的,可以同时支持 X86 桌面应用程序开发、Linux 嵌入式开发和 ARM 移动开发。
使用 Qt 开发的程序非常多,自从 1997 年 Qt 被用来开发 Linux 桌面环境 KDE 以来,Qt 就成为了 Linux 环境下开发 C++ GUI 程序的事实标准。虽然在 Windows 下,GUI 解决方案比较多,基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout 等等,基于 C# 的有 WinForm、WPF 等等,基于 Java 的有 AWT、Swing 等等,但 Qt 依然占据重要地位。在消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等领域,都能看到 Qt 的身影。
Qt 的优势
- 简单易学:使用 Qt,用户使用少量代码就可以开发出一个简单的客户端,其宗旨是 Code Less & Create More。
- 面向对象:Qt 良好的封装机制使得 Qt 的模块化程度非常高,可重用性较好,便于移植。同时,Qt 提供了一种称为信号与槽(signals / slots)的安全类型来替代 callback,使得各个功能模块 之间的协同工作变得十分简单,也易于理解。
- 大量的开发文档:Qt 官方提供完整且易读的开发文档和示例代码,随着 Qt 开发者越来越多,资料也越来越丰富,能有效降低初学者的学习成本。
- 漂亮的界面:Qt 很容易做出漂亮的界面和炫酷的动画,并且支持 2D/3D 图形渲染,支持 OpenGL。
- 独立安装:Qt 程序最终会编译为本地代码,不需要其他库的支撑,而 Java 需要安装 JVM 虚拟机,C# 需要安装 .NET Framework。
- 跨平台特性:Qt 是跨平台的,几乎支持所有的平台,包括 Windows、Linux、macOS 桌面平台,Android、iOS/tvOS/watchOS 等移动平台,以及各种嵌入式平台。
Qt 值得学习吗
如果你想要构建一个跨平台的桌面应用程序,那么 Qt 必定在你的考虑范围内。同时,Qt 的接口简单、容易上手,对初学者来说,学习 Qt 框架对学习其他框架具有参考意义。
如果你在工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备等行业工作,Qt 有大量的应用,因此学习 Qt 也有利于拓宽你的职业生涯。
Qt 被人诟病的主要原因在于其软件授权方式,Qt 使用商业授权、LGPL、GPL 三种许可证。如果是具有开源分发的开源项目、学生/学术目的、业余爱好项目、没有外部分发的内部研究项目,可以放心免费使用。商业项目则需要多加注意,关于 Qt License 的问题我们后面有机会再展开讨论。
Qt 应用案例
- KDE:Linux 操作系统上的自由图形桌面环境,全称 K Desktop Environment。
- VLC:一个开源、跨平台的多媒体播放器和框架。
- 3D Slicer:一个基于 Qt 和 VTK 的开源的可视化和医学影像计算软件。
- ParaView:一个基于 Qt 和 VTK 的数据可视化的工具软件,在流体力学、空气动力学、生物医学、统计学等有数据可视化需求的领域中发挥重要的作用。
- Google Earth:Google 开发的一款三维虚拟地图软件。
- Opera:著名的网页浏览器,在欧洲的市场占有率很高。
- VirtualBox:由 Oracle 开发的虚拟机软件。
- Skype:一个基于 P2P 的 VoIP 聊天软件。
- YY语音:一个支持多人在线语音聊天和语音会议的免费软件。
- 咪咕音乐:是中国移动倾力打造的正版音乐播放器。
- WPS Office:金山公司(Kingsoft)出品的办公软件。
- LiteIDE:一个开源的 Go 语言集成开发工具。
- Qt Creator:一个由 Qt 开发团队开发的集成开发环境(IDE),本身也是使用 Qt 开发的。
相关链接
- 官网:https://www.qt.io
- 文档:https://doc.qt.io
- Wiki:https://wiki.qt.io
- 论坛:https://forum.qt.io
- 下载:https://download.qt.io
- 代码仓库:https://contribute.qt-project.org
- GitHub 镜像仓库:https://github.com/qt
- QTCN 开发网:http://www.qtcn.org
- 许可证授权:https://www.qt.io/zh-cn/licensing