QT发展记事(202x)
2021-01-09 16:57:52 阿炯

本文主要用于记录Qt发展和使用过程中的大事记,截止到2030年前。

Qt 是一个跨平台的C++图形桌面应用程序开发框架,广泛用于创建图形用户界面、嵌入式系统和移动应用等。Qt 是一款面向对象的跨平台C++界面程序开发框架。它既可以开发界面程序,也可以开发控制台和服务器程序。选择Qt做为开发工具的九大理由 :
1、用户体验
在 Qt 中可以体验前所未有的开发体验,它的设计开发模块能够让您更好的塑造,提升品牌形象,让作品达到一个质的跳跃。

2、节省开支
一套完整的开发体系可以在无形中减少设计师们在代码上编写所耗费的时间,正所谓“时间就是金钱”,有了Qt,一个代码栈和一个开发团队就能同时支持所有的目标平台,在开发中省去了文件、软件调试通配的时间,极大的增加了开发的效率。

3、更加快速的完善产品
Qt能够为项目提供更加简化的工作流程,拥有Qt,设计师和产品开发人员能够更好地衔接协作;并且利用Qt现成的各类库,可以使设计师们更快的得到自己想要的结果,从而加速了产品的交付完成。

4、性能完善
良好的性能启动是一款软件在设计开发过程中所具备的硬性条件。它在众多产品之中凭借着灵敏的人机交互,迅速的启动以及流畅的动画和良好的性能在众多产品开发软件中脱颖而出。

5、高效的开发软件
Qt是开发者想要的最快、最简单和最有趣的体验。

6、适用于任何平台
“一次开发、任意部署”适用于Qt。跨平台开发不仅能节省开支,还能推动战略落地。具备优良的跨平台特性。下述平台均可使用Qt:MS/Windows - 9x、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10

Unix/X11 -Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台

Macintosh -Mac OS X

Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE、Symbian、Symbian^3、Symbian Anna、Symbian Belle、MeeGo、haiku-os。

7、灵活、可靠
面向对象:Qt 的良好封装机制使得其模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。

丰富的 API:Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能。

支持 2D/3D 图形渲染,支持 OpenGL,拥有大量的开发文档以及XML 支持。

并且大多数文件都可以通过从第三方图形设计工具导入UI资产,使用Qt预制组件、控件或QML来设计它们。

8、一个框架、更少依赖性
相对于其他应用程序开发框架,Qt在基于不同框架的库和工具集开发的应用程序不仅很简单,而且更加稳定 。

9、支持多种语言
Qt支持不同的开发语言。C++高效、强大、通用。Qt的声明式UI语言QML使得以快速创建UI变得容易。甚至可以用Python来开发!


Qt的未来何去何从

Qt 不再使用 LGPLv2.1 授权

Qt 5 转入商业化 LTS 支持引起广泛的争议


Qt的未来何去何从


在诺基亚与微软结盟,全面转向Windows Phone平台后,诺基亚原有软件技术Symbian、MeeGo和Qt的命运引起了开发人员的关注。Qt社区的失落是显而易见的,毕竟2010年9月Elop执掌帅位之后,曾经宣布将Qt置于横跨Symbian和MeeGo两大操作系统之上的统一平台的地位。而诺基亚已经确认,Qt将不会向Windows Phone移植。2011年2月12日,诺基亚公司主管Qt生态链(销售、市场和服务)的负责人Daniel Kihlberg在Qt官方博客发表文章,阐述了Qt未来的发展走向。他首先确认,Qt仍将在诺基亚发挥重要作用。理由是:
* Symbian。留住2亿现有的Symbian用户并按计划在未来数年内继续卖出1.5亿部Symbian手机,对诺基亚是至关重要的。为此,Symbian必须依靠Qt现代化。

* MeeGo。诺基亚将在2011年发布第一款MeeGo设备,而且还将继续以开源项目的形式开发MeeGo,为将来的新一代技术做准备。而MeeGo的开发平台还是要依赖Qt。

* 社区。Qt社区现在 已经非常繁荣,除诺基亚之外,还有多个行业的数以万计的企业在使用Qt或者参与Qt的开发。随着未来数月之内Qt Quick和Qt SDK 1.1的发布,相信有更多开发人员加入现有的40万Qt开发者的大家庭。这将使Qt在移动、桌面和嵌入式开发者之中的地位更加重要。

* 发展。Qt仍在快速发展。Qt Quick(包括类JavaScript语言QML、Qt Creator和Qt Declarative)可以使更多非C++程序员和设计师方便地创建应用和界面,从而使Qt拥有更多的用户;Qt SDK 1.1(上个月刚刚发布技术预览版)为桌面和移动开发人员提供了统一的SDK。

* 潜力。Qt将无所不 在。Qt正在大力向低端的Linux设备和版本开疆拓土。Qt还在其他更广阔的领域支撑创新,比如梦工厂(DreamWorks)就将所有内部的动画工具 都切换到Qt上了,他们已经用Qt制作了《驯龙记》(How to Train Your Dragon)和《超级大坏蛋》(MegaMind)那样超酷的电影!

他最后表示,Qt现在正在变得越来越流行,2010年仅仅从qt.nokia.com网站的Qt下载量就超过150万次,是2009年的两倍;而随着更多创新、投资和开放管理的引入,Qt的未来值得期待。从Qt网站还有大批研发职位在招聘(挪威和德国)来看,这个部门似乎还没有受到诺基亚转型的直接影响,至少比公司内部Symbian和MeeGo的哥们强多了(也有人将之归因于诺基亚内部的混乱状态)。

可是,对诺基亚方面的上述表态,开发人员并不买账,他们已经被伤透了心。在这篇博客文章下面的评论里,几乎都是异口同声的不满和抱怨:诺基亚如此出 尔反尔,谁还会为将死的平台开发?现在Qt还怎么“Code Less. Create More. Deploy Everywhere”?有些人还心存侥幸地问是否有计划开发.NET移植,但很快有Qt内部人员予以否认,说这样只会造成不必要的分裂。马上遭人回击:“分裂?那是微软要考虑的事情,你诺基亚和HTC一样只是制造商,想那么多干嘛?你要考虑的是跟着你混的开发人员啊,HTC有吗?”更有不少人对微软戒心 很深,呼吁Qt重新独立,或者考虑更有前途的主人(Intel?Ubuntu背后的Canonical?),也有人提议马上成立Qt基金会,另起一摊,延续血脉。只有一些桌面和嵌入式的开发者比较心平气和,但是他们对Qt未来也忧心忡忡。如果Symbian很快消亡,MeeGo在三心二意的投入中未见成果,Qt对于诺基亚来说就不再有任何用处了。

Qt作为一种已经发展15年的优秀开源跨平台(Windows、Linux、MacOS、QNX、VxWorks等,参见这里)图形界面开发技术,这几年的确越来越流行了,与曾经的主要竞争对手GTK+相比优势也越来越明显。这一点从Qt官方网站上所列举的丰富的应用实例可以看出来,航天、国防、医疗、车载、能源、家庭娱乐、视觉特效、科学仪器等等。相关图书的销量也可以作为佐证,Qt图书虽然不多,但基本上都能上专业计算机开发类图书的畅销排行榜,而且销售相当稳定,寿命很长。可以说,即使Qt丢掉移动开发领域曾经光明的前途,在桌面和嵌入式系统跨平台的能力,仍然可以保证它在可见的将来继续发展。

然而,对于Qt而言,诺基亚的支持力度仍然至关重要,2008年被收购后Qt各方面发展的确很快,就是一个证明。从这一点来说,诺基亚战略发布会上演示的这一张有关研发投资的幻灯片恐怕对Qt不是什么好消息。其中,能分到Qt上的资金会来自哪里?反正相关的投入都在压缩。当然Kihlberg的文章最后提到了“开放管理的引入”耐人寻味,Qt这个部门在诺基亚本来就是相对独立的,公司会不会有计划引入其他伙伴(比如Intel,毕竟MeeGo要继续发展,开发工具仍然不可少)共同投入呢?无论如何,让我们祝福Qt。

上文部分源自:CSDN

22年的老将Lars Knoll将从Qt公司CTO岗位上离职创业

Lars Knoll 是 Qt 公司的首席技术官和首席维护者,他也是 KHTML(Webkit 的前身) 的创建者,他于2022年5月中旬在个人社交媒体发布公告,表示将离开 Qt 公司,之后他会加入一家创业公司开启新的征程。

Lars Knoll 从 90 年代末开始接触 KDE/Qt,并在 2000 年成为 Trolltech 的重要一员(诺基亚在 2008 年收购 Trolltech 后,将其改名为 Qt Software;后来又几经转手,最终形成今天的 Qt 公司)。无论是在 Trolltech,还是后来的诺基亚、Digia,再到 Qt 公司,Lars Knoll 一直跟随公司,也见证着公司的发展。如今在专注于这个开发框架 25 年,并在 Qt 任职 22 年之后,他选择离开 Qt 公司,开始尝试一些新的东西。

这是一个艰难的决定,但在 25 年之后,我觉得这是一个正确的决定,我想尝试一下别的东西。离职后 Lars Knoll 仍然会阅读 Qt 项目的邮件列表,并可能参加一些活动,但也会逐渐降低以往在 Qt 社区中的活跃度,未来他将把大部分时间花在 Qt 生态之外的事情上。同时他也透露了未来的去向,之后将和 Trolltech 的创始人一起加入一家小型的挪威创业公司,虽然他仍然身处软件行业,但这家创业公司所从事的事情与 C++ 或开发者工具无关。感谢多年来与我一起共事的所有人,在 Qt 以及通过 Qt 认识了许多朋友。这是一次奇妙的旅程,对此充满感激 —— Lars Knoll。

Lars Knoll 还发布了另一个邮件列表帖子,其中他想提名 Volker Hilsheimer 担任下一任 Qt 首席维护者。Lars Knoll 接下来将会完成工作的交接任务,并于6月底正式离开公司。

Qt 不再使用 LGPLv2.1 授权

Qt公司于2016年2月下旬宣布改变Qt跨平台应用开发框架的许可证授权。新版的Qt将在一个商业许可证、GPLv2、GPLv3和LGPLv3下授权,不再使用LGPLv2.1授权。Qt公司称,更新的开源许可证将能在用户使用开源版的Qt时确保用户自由,LGPLv3明确禁止封闭嵌入式设备分发LGPLv3授权的软件,在LGPLv3下分发的软件还向所有软件的接收者给予了专利许可。


Qt 5 转入商业化 LTS 支持引起广泛的争议

据外媒消息,从2021年1月5日起,Qt 公司开始将 Qt 5.15 作为仅供商业化的 LTS,现有的 Qt 5.15 分支将公开可见,但不会看到任何新补丁,只有付费账户才可以使用长期支持版本的 Qt 5.15 。

2020年1月,Qt 公司宣布对 Qt 项目的运营策略进行改革,所有用户都需要注册 Qt 帐户才能获取安装 Qt 的二进制文件(源码文件不受限制),同时长期支持版本(LTS)和离线安装程序仅面向拥有商业许可证的大型企业用户提供,此外面向初创企业和小型企业推出每年收费 499 美元的新 Qt 产品。只有最新的非稳定版本仍可供用户免费使用。此举也引起了社区的强烈不满,同时引发了基于 Qt 开发的 KDE 社区的担忧。有用户在 Qt 官方公告下留言讽刺道:“所以,基本上您是在告诉所有忠实的开源用户,现在他们将仅被视为商业客户的 beta 测试者,并且作为奖励,他们将只能下载非 LTS 版本。你们真是太亲切了!”

据悉从2021年1月5日起,只有活跃的商业许可证持有人才能访问包含 Qt 5.15 LTS 发行版本代码的私有存储库,首个仅用于商业用途的 Qt 5.15 LTS 标记发行版将于 2 月发布。目前仅有刚发布不久的 Qt 6.0 可供用户免费使用。而与 Qt 5.15 一样,将来的 Qt 6.2 被确认是另一个仅用于商业用途的 LTS。

Qt 公司激进的商业化举动也让一些来自外部的代码贡献者感到心寒。长期的 Qt 贡献者,来自英特尔公司的开发者 Thiago Macieira 表示,至少对于他在 Qt 中处理过的代码,他不会再参与修复、评论和审查后端错误报告。目前已经有开发者发布了一个 Qt.io 错误报告呼吁对社区版感兴趣的开发者维护 Qt 5.15 的“免费”分支,希望借此提出社区用户的述求以影响 Qt 公司的决定。但 Qt 公司尚未对此提议做出回应。而在2016年的2月份,Qt 不再使用 LGPLv2.1 授权,都是今天变异的重要线索。


KDE 社区的担忧:Qt 公司正考虑仅面向付费用户提供新版本

2020年4有12日,一封题为 Qt, Open Source and corona 的邮件在 KDE 社区引发了广泛的讨论,其内容主要是指出 Qt 公司正考虑在 Qt 发布新版后的 12 个月内,新版本将限制为仅面向付费客户提供(即不将其作为开源项目发布)。也就意味着,在新版发布后长达一年的时间里,开源用户将无法使用它——除非成为付费客户。就此引发的各种讨论,Qt 公司进行了简短的回应,大意是说这些内容不能代表 Qt 公司的观点和计划,最后还表示 Qt 公司为自己致力于客户、开源和 Qt 治理模型的理念而感到自豪。

然而整篇声明没有重申其及时开源 Qt 和面向所有用户提供下载等承诺,这样的回应显然得不到信服。下面介绍此次事件的背景信息。

首先有必要说明 KDE 社区、Qt 项目和 Qt 公司这三者之间的关系:
KDE 基于 Qt 框架开发,因此 KDE 社区既受益于 Qt 也直接为 Qt 贡献代码
Qt 既背靠着拥有雄厚资金实力的 Qt 公司,也从庞大且知名的 KDE 社区中获益甚多
Qt 公司受益于 KDE 社区,因为大量开源贡献者、开发者和社区专家帮助其改进 Qt 项目

可以看到三者有着密切的关系,且都能从中获益。不过根据邮件的描述,Qt 公司目前正在考虑停止这种健康的合作。据 Olaf Schmidt-Wischhöfer(任职于 KDE Free Qt Foundation 董事会的 KDE 开发者)的介绍,在过去两年里,Qt 公司和 KDE Free Qt 基金会一直在就更新合同进行谈判,后者在谈判中的目标是:
在不损害 Qt 项目和 KDE 社区的前提下,帮助 Qt 公司增加收入
加强对 Qt 项目和 KDE 社区的保护
避免 Qt 公司和 Qt+KDE 社区之间的分裂

谈判的具体内容包括:
修复 Qt 付费许可条款与使用/贡献开源软件之间的不兼容问题
(“Prohibited Combination” in https://www.qt.io/terms-conditions/)
修复 Qt Design Studio(属于受限的自由软件)与现有合同不兼容的问题
要求 Qt 公司及时发布 Qt 自由软件版本的更新以确保 KDE LTS 版本的安全修复
更新合同并将 Wayland 纳入其中
评估公司提出的合同变更建议,以使 Qt 业务的经济效益更高,例如可以选择将 Qt 与其他软件捆绑销售,或与第三方专有软件进行整合

然而,Qt 公司在今年1月宣布的三个变更让谈判遭遇了挫折:
需要使用 Qt 帐户才能获取安装 Qt 的二进制文件(源码文件不受限制)
长期支持版本(LTS)和离线安装程序仅面向拥有商业许可证的用户提供
面向初创企业和小型企业提供新版 Qt 每年收费 499 美元

尽管如此,这时双方仍在努力寻找对各方都有利的方案。然而就在上周,Olaf 表示 Qt 公司突然通知 KDE e.V. 董事会和 KDE Free Qt 基金会,称由于新冠病毒造成的经济前景给他们带来了更大的压力,所以需要增加短期收入。因此 Qt 公司考虑,在所有 Qt 版本发布新版后的 12 个月内,新版本将限制为仅面向付费客户提供。对此,Olaf 希望 Qt 公司能重新认真考虑此方案,毕竟这对开源社区造成的威胁是可以预见的。Qt 公司表示只有当 KDE 社区在其他方面能给他们提供让步时,他们才愿意重新考虑此方案。但 Olaf 提到,半年前双方在讨论合同更新期间,Qt 公司突然限制了 LTS 版本的发布。

KDE 社区和 Qt 公司之间曾经达成过一项协议,其中规定:如果 Qt 公司在开源许可证有效的情况下停止开发自由软件版本的 Qt(Qt Free Edition),那么基金会有权以 BSD 许可证或其他开源许可证发布 Qt。

“[…] should The Qt Company discontinue the development of the Qt Free Edition under the required licenses, then the Foundation has the right to release Qt under a BSD-style license or under other open source licenses.”

虽然 Qt 公司并未正面回应“仅面向付费客户提供新版本 Qt”的传闻,但从目前的情况来看,Qt 公司大刀阔库进行商业化的举动无疑已受到广泛的抨击。在 KDE 社区中,有人已经呼吁社区与其他 Qt 利益相关者合作(例如 fork 出另一个 Qt),并且在与 Qt 公司的对话中不要做出让步。不过无论如何,相信没人会受益于 Qt 公司和 KDE 社区之间的严重分歧。

笔者注:在笔者2004年刚接触到Linux时,就知道两大桌面环境GNOMEKDE,其背后的开发工具分别为GTK与QT,也当然知道其后面开发厂商对它们各自的态度:GTK为开源开发工具套件,而QT为当时奇趣公司下的开发工具集,QT的使用在当时就有在版权方面不小的争议且一直持续着。这么多年过去了,这个问题不但没有得到改善,反而更加的白热化和恶化。对此也不禁感叹:全面拥抱社区全是整个行业的出路。

Qt 简化商业授权方案

2022年2月上旬消息,Qt公司正在积极探索改进其产品多样性和提升财务业绩的方法,除了最近的 Qt Digital Advertising 1.0(Qt 数字广告 1.0),近日它还宣布简化其商业授权方案。

Qt 现在已将其面向开发者的商业产品整合为四个版本,具体如下:


Qt 将这种授权模式称为“洋葱架构许可证” (onion-architecture license)。因此,某个授权方案的级别越高,它包括的功能就越多。在这种授权模式中,上层的授权方案包括“内部/下层”方案的特性和功能。

这次变更的重大根本变化之一是,即使 Qt 开发者的许可证到期后,客户现在也可以继续分发基于 Qt 的应用程序。此前 Qt 的商业许可条款之一需要有效的开发者订阅许可才能使用此工具包分发应用程序。现在此条款已被删除,因此如果开发者的许可证失效,他们可以继续分发自己的软件。

据介绍,Qt 正在将过往以单独授权出售的多个附加组件整合到整体产品中。这些商业插件提供 machine-to-machine (M2M) 协议、用于开发微控制器用户界面的库,以及用于安全关键应用、汽车特定用途和应用管理的功能。

Qt for Application Development 最低定价的是 Professional 版本:每个用户每月 302 美元,而带有额外功能的 Enterprise 版本则为每个用户每月 329 美元。可点此查看详细的定价方案。

Linux版微信正式释出,使用QT开发的版权疑惑

2024年11月上旬消息,Linux 下的微信体验一直是用户讨论的焦点,如今大家期待的原生 Linux 版本终于来了。微信上线了 Linux 客户端的下载页,提供了适用于 x86、Arm 和龙芯 LoongArch 三种架构的测试版应用下载。其中,x86 和 Arm 平台支持 deb、rpm 和 AppImage 三种包格式,而 LoongArch 平台目前仅提供 deb 版本。

选用 Qt 进行全面重构

根据公开资料,微信 PC v4.0 版已开始公测,不但 Windows、macOS 系统下保持同步,还首次同步上架了统信 UOS、deepin 深度系统、麒麟系统的应用商店,无论界面还是功能都保持一模一样。可支持消息撤回、支持浏览、刷新朋友圈,通讯录界面改版,支持深色与浅色模式切换等功能。官方表示,微信 Linux 4.0 公测版全面重构,不仅架构上实现了突破,更在功能上实现了不同平台的全面对齐。

这是 Linux 系统在国内普及的重要一步。如今国内两大主流 IM 工具都实现了跨平台,这无疑会让腾讯在 Linux 用户群体中赢得一些认可。不少人对新版本微信实现跨平台的方式颇感兴趣。有知乎网友通过分析微信 4.0 的安装目录文件,发现其中的 Weixin.dll 文件包含了 Qt 库,由此推测微信或许是通过 Qt 来实现跨平台支持的。另外,客户端中的“关于”信息,也显示了微信 4.0 是基于 Qt 开发。


Qt 和 MFC 一样古老,同属于上世纪使用 C++ 开发 Windows 应用程序的重要框架。只是自 1990 年代中期发布以来,Qt 不断发展,逐渐能够支持广泛的平台和多种使用场景。如今,使用 Qt,开发者只需编写一次代码,即可在多个平台上部署,包括 Windows、Linux、macOS 以及移动平台如 Android 和 iOS。并且 Qt 还提供丰富的库和工具,支持 GUI 开发、网络连接、数据库访问等功能,不仅适用于桌面应用,还适用于嵌入式和物联网 (IoT) 开发方面。QT 官网列出的典型客户案例,主要是索尼机上娱乐系统、AMD 图形软件之类。

虽然 Qt 在 C++ 社区中享有盛誉,拥有强大的跨平台能力、丰富的组件库和灵活的架构,但始终未能走出小众圈子。特别是在 Flutter、Electron 和 React Native 等跨平台框架大行其道的今天,Qt 似乎已经逐渐淡出了大众的视野。

在各大技术论坛上经常能看到这样的讨论:“为什么没有更多的桌面应用选择 Qt 开发?”、“Qt 功能如此强大,为什么不够流行?”甚至有人直接提出“Qt 快要死了吗?”这样的疑问。就连 Qt 官方的技术论坛上也存在类似的讨论,可见开发者对 Qt 的未来发展充满了疑虑。

QQ 选择 Electron 而不是 Qt 开发桌面应用,也从侧面反映出了 Qt 目前所面临的困境。QQ 官方曾表示,选择 Electron 的主要原因是考虑到人才储备。在国内,熟练掌握 Qt 技术栈的开发者相对较少,这无疑增加了开发和维护成本。


被智能手机时代抛弃的 C++ GUI 框架

Qt 诞生于 1991 年,由 Haavard Nord 和 Eirik Chambe-Eng 两位挪威程序员共同开发。他们因对跨平台 GUI 开发的需求,创立了 Qt。1992 年,他们引入了创新的“信号与槽”机制,为 Qt 奠定了基础。

1994 年,他们正式成立公司,立志打造一个“世界最佳 C++ GUI 框架”。该公司最初名为 Quasar Technologies,后来更名为 Trolltech。然而,创业初期并不顺利。作为两个年轻的程序员,他们想要进入一个已经相对成熟的市场,但面临着客户少、产品未完成、资金不足等困境。幸运的是,他们的妻子都有工作,因此能够在 Eirik 和 Haavard 预计开发产品并开始赚钱的两年时间内养活丈夫。

Qt 的命名颇有趣味:选择字母“Q”作为类前缀,因为这个字母在 Haavard 的 Emacs 字体中看起来很漂亮。添加“t”代表“toolkit”,灵感来自 Xt,即 X Toolkit。1995 年 5 月,Qt 首次公开发布,并提供了商业和开源两种许可。同年,挪威公司 Metis 成为 Qt 的首个商业客户。

1996 年,欧洲航天局也采用了 Qt,他们购买了 10 个商业许可证,而 Matthias Ettrich 则使用 Qt 构建了 KDE,这使得 Qt 成为 Linux 上 C++ GUI 开发的事实标准,为 Qt 的发展奠定了坚实基础。

2008 年初,意识到自研软件平台竞争力不足的诺基亚,以 1.53 亿英镑收购了 Trolltech,并将其 C++ 框架作为其开发者战略的核心。彼时,诺基亚的软件平台在用户体验上已明显落后于苹果和谷歌。其界面设计老旧,操作繁琐,与竞争对手的简洁直观形成了鲜明对比。而 Qt 已用于构建成功的消费软件产品,如 Google Earth 和 Skype 客户端,因此这是一笔不错的生意。

诺基亚的管理层希望通过引入 Qt,为开发者提供一个更现代、更灵活的开发平台,以提升其软件的竞争力。Qt 作为一款成熟的 C++ 框架,具有强大的跨平台能力和丰富的功能,Qt 也没有固定的外观和风格,这给了诺基亚很大的定制空间。

Trolltech 团队在 Symbian 平台上引入了 Qt,并对用户界面进行了现代化改造。其认为简单地对旧界面进行修补是毫无意义的,只有全新的设计才能满足用户不断变化的需求。

另一方面,诺基亚内部存在着激烈的竞争,不同团队之间缺乏协作,导致了资源的浪费和重复开发。这种内部竞争的文化,源于诺基亚 2004 年的一项重组,旨在避免官僚主义的形成。然而,这种做法却导致了多个相互竞争的 UI 框架的出现,包括 Symbian 原有框架团队设计的名为 Orbit 的项目,以及 Linux 团队开发称为 libdui 或 Direct UI 的框架。

Qt 框架原本被视为统一诺基亚设备开发的工具,但工程师们却开发了两个不兼容的 UI API。这严重影响了源代码的兼容性,导致开发效率低下。诺基亚管理层似乎并未意识到这一问题的严重性,继续支持这两个并行的 UI 项目。经验丰富的 Epoc 开发者 Sander van der Wal 对此感到非常失望,他指出诺基亚再次犯了碎片化 API 的错误。

2010 年诺基亚换了一位新 CEO,他很快就认定 Qt 不足以为诺基亚赢回开发者或客户,并果断地取消了 Orbit 和 Linux 团队的 DirectUI 项目。然而在这些内耗的过程中,Symbian UI 的现代化工作被严重耽误。诺基亚的产品设计师仍然不得不与一个过时的、用户体验糟糕的界面打交道。

知情人士曾评价诺基亚的失败是因为“在无效的用户界面上浪费了 2000 人年”:拥有 Linux 和 Symbian 两个平台后,80% 的代码无需更改即可让诺基亚重获竞争力。而 Symbian 的代码已经投入了数千人年的开发,只有前 20% 的代码(最多)需要更新。然而,诺基亚未能实现这一点。正所谓“因缺少一颗钉子,整个王国都消失了”。

随着苹果和 Android 在市场上独占鳌头,Qt 对诺基亚来说也就变得毫无意义了。2012 年,诺基亚正式放弃了这项技术,Qt 被无情地“转手”给了 Digia。诺基亚放弃 Qt 之后,人们对该平台的信心一直在逐渐减弱。

从 Trolltech 到诺基亚,再到 Digia,应用框架 Qt 的发展历程充满波折,尽管它始终在开发者中保有拥趸。2014 年,Qt 从 Digia 分离出来成立了一个独立子公司,专注于将商业版和开源版 Qt 重新对齐。

复杂的使用条款

事实上,Qt 从第一天起就有两种许可证:商业开发需要商业许可证,而开源开发则提供免费软件版本。

其许可证多次变更,最终在 2022 年形成了一套很复杂的许可方式:商业开发者在购买 Qt 框架及相关工具时,可以在应用程序开发和设备创建两类许可中进行选择。这些版本在提供的功能数量、工具支持以及部署目标方面有所不同。价格从每月 302 美元起(仅适用于选择一年预付的用户),适用于专业应用程序开发许可;企业版则起价 329 美元,现有的 Qt 应用程序开发许可将自动转换为此企业版。


其许可也是导致 Qt 不够流行的原因之一。


在 2000 年以前,Qt 的许可证并不友好于开源软件开发。这在当时导致许多注重开源的人士拒绝使用 Qt。这也正是由其所开发的KDE桌面的竞争对手GNOME桌面环境诞生的部分原因。直到 2005 年,Qt 才允许开发适用于 Windows 的免费软件。因此,许多早于这些年份启动的开源项目无法采用 Qt 进行开发。对于商业软件开发,则需要支付许可费用。另外,一些应用程序的许可要求与 GPL、LGPL 或 Qt 的商业许可不兼容。GPL 不适用于商业软件,LGPL 不适用于静态链接软件,而商业许可需要花钱——许多人都不愿意花钱。

在社交平台咨询 Qt 许可模式的不在少数。近期,还有开发者在使用 Qt 开发软件后收到了 Qt 代理商的告知函,称其可能侵权。尽管开发者仅是动态链接了 Qt 的核心库和控件库,并未修改源代码,但仍感到困惑。这是因为 Qt 使用了 LGPL 许可证,该许可证的条款相对复杂,尤其是关于修改源代码和开源方面的规定,让开发者难以完全理解。此外,国内外 Qt 授权的差异,以及代理商的告知函,加剧了开发者对 Qt 商用许可的困惑。

社区中对此也存在诸多争议,一些开发者建议避免使用 Qt,而另一些开发者则建议在软件中明确标明使用了 LGPL 协议。总的来说,Qt 的商业化应用涉及到复杂的法律问题,开发者在使用 Qt 进行商业开发时,务必谨慎对待,并寻求专业的法律建议。