目录
- 前言
- 一、互联网核心岗位与职责
- 二、什么是客户端开发?
- 三、客户端界面的两种典型风格
- [四、什么是 Qt?](#四、什么是 Qt?)
- [五、Qt 的发展史](#五、Qt 的发展史)
- [六、Qt 的版本与许可证](#六、Qt 的版本与许可证)
- [七、Qt 的优点](#七、Qt 的优点)
- [八、Qt 支持的平台与生态](#八、Qt 支持的平台与生态)
- [九、Qt 的应用场景](#九、Qt 的应用场景)
- [十、Qt 的成功案例](#十、Qt 的成功案例)
- [十一、Qt 的发展前景及就业分析](#十一、Qt 的发展前景及就业分析)
- [十二、Windows 下的 GUI 开发方案大盘点](#十二、Windows 下的 GUI 开发方案大盘点)
- [十三、Qt 在客户端开发中的定位与优势](#十三、Qt 在客户端开发中的定位与优势)
- 结语


🎬 云泽Q :个人主页
🔥 专栏传送入口 : 《C语言》《数据结构》《C++》《Linux》《蓝桥杯系列》
⛺️遇见安然遇见你,不负代码不负卿~
前言
大家好啊,我是云泽Q,欢迎阅读我的文章,一名热爱计算机技术的在校大学生,喜欢在课余时间做一些计算机技术的总结性文章,希望我的文章能为你解答困惑~
客户端开发是一门历史悠久的技术,早在上个世纪 80 年代,苹果电脑推出第一代图形界面操作系统后,这项技术就已经诞生。相比之下,网页开发、移动端开发都是在更晚的时间才出现的。
一、互联网核心岗位与职责
在互联网行业中,核心岗位主要分为以下几类:
1. 开发(程序员):这是最受关注的岗位,主要负责代码实现和功能开发,细分方向包括:
- 后端开发:负责服务器端逻辑、数据处理和业务支撑。
- 前端开发:属于 "大前端" 范畴,直接面向用户,又可细分为:
-
- 网页前端开发:负责构建网页界面。
-
- 桌面应用开发:编写电脑上运行的应用程序。
-
- 移动应用开发:开发手机上的应用程序。
- 算法工程师:专注于算法设计、数据分析和模型训练。
- 游戏开发:负责游戏引擎、玩法逻辑和美术交互等。
2. 测试 :通过各种测试手段保障产品质量,发现并修复软件缺陷。
3. 运维(管理机器) :负责服务器、网络和系统的稳定运行,保障服务可用性。
4. 产品经理:属于非技术岗,核心职责是提出产品需求、规划功能和推动项目落地。
二、什么是客户端开发?
客户端,就是直接和用户打交道的那一端程序,比如我们熟悉的 Chrome 浏览器、CCTalk、QQ 音乐、Steam 客户端等,都属于客户端程序。
而服务器,则是站在客户端背后提供支撑的角色。虽然大部分客户端程序都需要服务器的支持,但也有一些程序可以独立运行,比如系统自带的画图板、计算器,它们同样是直接和用户交互的 "客户端程序"。
客户端开发的核心任务,就是编写和用户交互的界面。
三、客户端界面的两种典型风格
和用户交互的界面,主要有两种风格:
- 命令行界面 / 终端界面(TUI):也就是我们常说的 "黑框框",主要给程序员使用,比如 GCC、GDB 等专业软件。
- 图形化界面(GUI):更直观、更友好,面向普通用户,也是 Qt 框架主要服务的场景。
什么是图形用户界面(GUI)?
图形用户界面(GUI)指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。比如我们熟悉的 Android 手机界面、iOS 手机界面,都属于典型的图形用户界面。

四、什么是 Qt?
Qt 是一个跨平台的 C++ 图形用户界面应用程序框架 。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能,是完全面向对象的,很容易扩展。Qt 为开发者提供了一种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应用程序,同时也可以使用 C++ 语言进行高级开发。

框架 vs 库:有什么区别?
很多人会把 "框架" 和 "库" 混淆,其实它们的定位完全不同:
- 库(Library):是大佬们把一些代码写好,供程序员调用的工具。在这个关系里,程序员是主体,库只是辅助工具。
- 框架(Framework):则是占主体地位的,它定义了一套完整的开发规范和流程,程序员需要配合框架,填充其中留出的细节。
本质上,框架是一群大佬发明出来的,目的是限制程序员的自由,让普通开发者写出来的代码更靠谱、更规范。因为 C++ 这门语言太自由、太灵活了,自由就意味着更容易出错,而框架正好能帮我们规避很多低级错误。
Qt 在 C++ 生态中的地位
C++ 的生态是割裂、离散的,不像隔壁 Java 那样,存在 Spring 这样的巨无霸社区 "一统天下"。C++ 不同的开源社区、大厂,各自有各自的框架,各自为政,缺乏统一的标准。
相比之下,像 Qt 这样能够被大家共同认可的框架,在整个 C++ 生态中是不多见的。它不仅是商业公司维护的成熟产品,还在工业、嵌入式、桌面软件等领域得到了广泛应用,对应的就业岗位也比很多其他方案更多。
五、Qt 的发展史
Qt 的诞生可以追溯到 1991 年,这一年计算机世界里诞生了很多影响深远的技术,比如 Qt、Python、Vim、OpenGL、Linux 等。
正式时间线
- 1991 年:Qt 最早由奇趣科技(Trolltech)开发。
- 1996 年:Qt 进入商业领域,同时成为当时流行的 Linux 桌面环境 KDE 的基础。
- 2008 年:奇趣科技被诺基亚公司收购,Qt 成为诺基亚旗下的编程工具,被用于开发塞班系统的应用程序。
- 2012 年:Qt 又被 Digia 公司收购。
- 2014 年 4 月:跨平台的集成开发环境 Qt Creator 3.1.0 发布;同年 5 月 20 日,Qt 5.3 正式版发布,至此 Qt 实现了对 iOS、Android、Embedded 等各平台的全面支持。
背后的故事
诺基亚当年主推 Qt 作为塞班系统应用程序的开发方案,而塞班系统也是最早的智能手机系统之一。诺基亚手机以 "质量特别好,能砸核桃、挡子弹" 著称,但在 2007 年乔布斯发布苹果手机后,移动互联网时代开启,诺基亚逐渐衰落。
2012 年左右,iPhone 4 成为一代经典,小米和华为也入场智能手机,安卓系统大规模崛起。诺基亚最后的反扑是和微软联合推出 Windows Phone 手机,但由于软件生态问题(当年很多爆款小游戏在 Windows Phone 上都没有),最终也没能挽回颓势。
诺基亚 "嘎了" 之后,Qt 就被卖给了 Digia 公司,这个公司的网上信息不多,甚至有人调侃 "是不是研究奥特曼的"。
六、Qt 的版本与许可证
Qt 版本选择
目前最新的版本是 Qt 6,但相对来说 Qt 6 和 Qt 5 之间的核心功能区别不大。并且企业中也仍然有大量的项目在使用 Qt 5,这也印证了软件开发中的一个重要理念:并非是越新就越好。在进行商业开发的时候,相比之下,引入新的特性,不如优先确保不引入严重的问题,稳定和可靠往往是企业更看重的。
Qt 的两种许可证
Qt 在发布的时候提供了两种许可证,开发者可以根据自己的需求选择:
- 商业许可:开发者以商业目的使用 Qt 框架进行开发和发布软件的许可,开发者需要购买商业许可并按照相关规定使用 Qt 框架。商业许可提供了更多的功能和服务,比如专业的技术支持,适合于商业软件开发。这和 Redhat(收费 Linux 发行版)、Oracle(收费的数据库)等商业软件类似,主要买的是技术支持和服务保障。
- 开源许可:开发者以非商业目的使用 Qt 框架进行开发和发布软件的许可,开发者可以免费使用 Qt 框架(也就是 "白嫖"),但需要遵守开源许可协议的要求,如在软件中包含 Qt 许可协议的声明等。
七、Qt 的优点
Qt 之所以能成为 C++ 生态中少有的被广泛认可的框架,得益于它的诸多优点:
- 跨平台能力极强:几乎支持所有的平台,包括 Windows、Linux、macOS、嵌入式系统、Android、iOS 等,是名副其实的 "六边形战士"。
- 接口简单,容易上手:Qt 的 API 设计清晰直观,学习成本相对较低,而且学习 Qt 框架对学习其他框架也有重要的参考意义。
- 简化内存回收机制:Qt 提供了半自动的垃圾回收机制,能够简化内存释放操作,同时尽可能小地影响程序的运行效率,让开发者从繁琐的内存管理中解放出来。
- 开发效率高:提供了丰富的组件和工具,开发者可以快速构建应用程序,大大提升了开发效率。
- 社区氛围好:拥有活跃的社区和丰富的文档资源,遇到问题容易找到解决方案,市场份额也在缓慢上升。
- 支持嵌入式开发:在嵌入式领域有广泛应用,是工业控制、智能家居等场景的重要选择。
八、Qt 支持的平台与生态
Qt 的核心优势是跨平台能力极强,它不仅仅支持 Windows,也支持 Linux、Mac,还能深入嵌入式、车载、工业控制等领域。
1. Windows 平台
Qt 支持 Windows 的各个版本,包括 XP、Vista、Win7、Win8、Win2008、Win10 等,是 Windows 桌面应用开发的主流选择之一。
2. Linux 平台
Qt 支持各种 Linux 发行版,尤其是 Linux 中的 KDE 桌面环境就是基于 Qt 构建的。
需要注意的是,Linux 主要是给服务器使用的,服务器通常不需要图形界面,而是使用命令行界面(TUI),门槛更高但效率也更高。而 GUI(图形化界面)则门槛低、效率也相对低一些。
当然,也有少数用户使用 Linux 作为桌面系统,Linux 桌面环境中存在好几套主流方案:
- GNOME:基于 GTK 构建,是很多发行版的默认桌面。
- KDE :基于 Qt 构建,功能强大但资源占用较高。
能坚持只使用 Linux 作为桌面的兄弟,确实值得 "敬他是一条汉子",因为 Linux 桌面使用过程中存在很多兼容性和生态问题。
3. Mac 平台
Qt 也支持 Mac OS X 系统,虽然 Mac 电脑在品牌和信仰上有优势,但从性价比来看,往往不如 Windows 电脑。前几年新出的 Mac M1 系列电脑,号称 GPU 性能很强,售价高达 2.5w 左右,但仔细看参数,其 GPU 能力大概也就相当于桌面端 3070 的水平(4k 左右)。
4. 嵌入式平台
嵌入式系统是 Qt 实际开发中的一个主战场。我们日常使用的冰箱、洗衣机、路由器、投影仪等设备,内部都有计算机,这些设备的硬件配置不需要很高,追求低配置、低成本。
有些嵌入式系统也需要运行图形化界面的程序,这时候 Qt 就可以起到关键作用,尤其是在一些工业设备上。当然,这个领域中 Qt 也受到了安卓的挑战。
九、Qt 的应用场景
Qt 的应用场景非常广泛,覆盖了桌面、移动、嵌入式等多个领域:
- 桌面应用程序
Qt 能够创建各种类型的桌面应用程序,包括文件管理器、媒体播放器、绘图程序等。Qt 应用程序支持多种操作系统,可以运行在 Windows、Linux、macOS 等桌面操作系统上。 - 移动应用程序
Qt 支持 Android 和 iOS 移动操作系统,为应用程序提供了强大的跨平台能力。可以使用 Qt 构建各种移动应用程序,例如社交应用、游戏、娱乐等。不过目前知名的商用移动应用案例相对较少,更多还是集中在桌面和嵌入式领域。 - 嵌入式系统
Qt 在嵌入式领域应用非常广泛,它可以构建面向各种设备的图形应用程序,在机顶盒、车载娱乐系统、安防监控设备等领域具有广泛的应用。
十、Qt 的成功案例
Qt 已经被众多知名企业和项目采用
-
其中一个广为人知的案例就是剪映 。剪映是字节跳动旗下的视频编辑工具,它的核心界面和功能就是基于 Qt 实现的,这也充分证明了 Qt 在高性能桌面应用开发中的实力。

-
宝马 iDrive 8 系统
宝马最新一代车载信息娱乐系统,采用 Qt 开发,提供了革命性的用户体验。iDrive 8 系统拥有流畅的触控交互、3D 导航地图渲染和智能语音助手,Qt Automotive Suite 提供的符合汽车行业标准的安全认证(ISO 26262)、实时性优化和硬件加速支持,确保了系统在行车环境中的稳定可靠运行。

-
特斯拉中控屏系统
特斯拉汽车的核心交互界面,从早期型号到最新的 Model S/X/3/Y 均采用 Qt 开发。特斯拉中控屏需要同时处理导航、媒体、车辆控制和能源管理等多种功能,Qt 的模块化设计和高性能特性使其能够高效整合这些功能,提供直观、流畅的用户体验,成为电动汽车行业的标杆。

-
大疆创新无人机地面控制站
大疆无人机的配套软件,用于规划飞行任务、实时监控飞行状态和处理航拍数据。地面控制站需要处理实时视频流和传感器数据,Qt 的高性能图形渲染和网络通信能力能够满足这些需求,同时 Qt 的跨平台特性让控制站能够运行在不同的设备上,为无人机操作员提供便捷的控制体验。
十一、Qt 的发展前景及就业分析
Qt 是一个强大且广泛应用于跨平台软件开发的框架。它提供了丰富的工具和库,可用于开发高质量、高效率的图形用户界面(GUI)应用程序,并且可以在 Windows、Linux、macOS 等多种操作系统上运行。随着行业的发展,Qt 的重要性也逐渐体现出来。
行业发展方向
- 物联网(IoT)和嵌入式系统的发展:在当下的嵌入式和物联网行业中,Qt 的作用逐渐得到了体现,因为可以用它来开发具有 GUI 界面的嵌入式应用程序,这对于智能家居、汽车以及医疗设备等领域来说,具有非常重要的作用。
- 自动驾驶和智能交通领域:现在很多的汽车都引入了自动驾驶的技术,而 Qt 在其中也有着广泛的应用,它可以开发车载嵌入式系统和用户界面程序。随着未来自动驾驶技术的发展,Qt 在这方面的需求也会不断地增多。
- 游戏开发:Qt 有一些非常重要的功能模块,例如 Qt 3D Studio,可以应用于游戏开发。未来游戏行业的持续发展,Qt 在游戏行业的发展将会越来越多。
就业方面的发展前景
- 广泛的就业机会:Qt 在各个行业的应用逐渐广泛起来,对于掌握 Qt 开发能力的人员需求也在不断增加,因此在就业方面,相比于其他行业来说,Qt 就业面更广,选择性更多。
- 高薪水和职业发展机会:Qt 作为一项专业技能,掌握此项技术的开发者获得的薪资报酬也是非常可观的,具有更多的职业发展机会。总之就是,如果掌握了 Qt 开发技术,未来的发展前景还是非常不错的。
十二、Windows 下的 GUI 开发方案大盘点
在 Windows 平台上编写 GUI 程序,其实有很多种解决方案,Qt 只是其中之一。下面我们来逐一盘点这些技术体系,看看它们的来龙去脉和各自的特点:
1. Windows API
这是 Windows 系统提供的原生 API,直接和操作系统底层打交道。开发起来非常原始、繁琐,需要手动处理大量底层细节,开发效率很低。它更适合底层系统级开发,而不是普通的应用程序界面开发。
2. MFC
MFC(Microsoft Foundation Classes)是微软在 90 年代推出的,基于 C/C++ 搭建的 GUI 开发技术体系,在当时影响力非常深远。经典的 VC 6.0 开发环境就是它的代表工具。不过,MFC 早已停止更新,逐渐被淘汰,现在很少用于新项目开发。
3. Qt
Qt 诞生于 1991 年左右,和 MFC 不同,它至今仍然在不断推陈出新,保持着强大的生命力。除了 Qt,还有 GTK、WxWidget 等其他跨平台 C++ GUI 框架,但 Qt 是目前最主流的选择。它的核心定位是桌面应用开发,也支持嵌入式和移动平台(虽然商用移动应用案例不多)。
4. Windows Forms
微软推出自己的编程语言 C# 之后,便将 GUI 开发的资源向 C# 倾斜,Windows Forms 就是为 C#/.NET 量身定做的一套 GUI 技术体系。它主要针对早期 Windows 版本,如 XP、Win7。作为早期方案,现在也逐渐被更现代的技术取代。
5. WPF & UWP
WPF 和 UWP 可以看作是 Windows Forms 的升级版,微软推出这两个技术的野心很大,希望它们不仅能制霸 PC 端,还能覆盖平板、手机等移动设备。遗憾的是,后续发展并未达到微软的预期,影响力远不如当年的 MFC。现在进行 Windows 程序开发,并不会首选 WPF 和 UWP 方案。
6. Electron
这是最近几年非常火的一个技术方案,由开源社区推出,本质上是把基于 HTML 的网页,打包成一个可以在 Windows 上运行的客户端程序。
它最初是 GitHub 用来开发 "atom" 文本编辑器的。
后来 atom 已经停止维护,被微软的 VSCode 超越;而 VSCode 本身就是基于 Electron 开发的。微软在收购 GitHub 后,Electron 也成为了微软旗下重量级的 GUI 开发技术。
不过,Electron 最大的问题是运行效率较低,不如原生开发的技术体系(如 Qt、MFC)性能好。
十三、Qt 在客户端开发中的定位与优势
Qt 虽然只是众多解决方案中的一个,但绝对是其中 "非常能打" 的一个。它的核心定位是编写桌面端的图形化界面(GUI)程序,同时在嵌入式、车载、工业控制等领域也有广泛应用。Qt 的跨平台能力极强,支持 Windows、Linux、macOS 三大桌面系统,还能深入嵌入式、移动平台(虽然商用移动应用案例不多)。它持续更新迭代,社区和商业支持都很完善,对应的就业岗位也很丰富。在割裂的 C++ 生态中,Qt 是少数被广泛认可的框架,是名副其实的 "六边形战士"。
结语
