Qt应用编程系列书籍

我的QT5学习之路(一)——浅谈QT的安装和配置
我的Qt历程

Qt的历史

Qt是由奇趣科技公司(Trolltech)的两位创始人Haavard Nord和Eirik Chambe-Eng合作开发而成,首个版本完成于1991年,而第一个商业版本则是在1995年才正式推出。

Qt的名字来源于一个有趣的故事。当时这个工具之所以取名为Qt,是因为在Haavard的Emacs字体中,字母Q看起来非常漂亮;而字母t的灵感则来源于当时的另外一个工具Xt(X toolkit)的取名。

初版Qt只有两个版本:适用于类Unix平台的Qt/X11和适用于Windows平台的Qt/Windows。其中,Windows版本只有专利授权,这意味着如果需要将使用Qt/X11编写的开源应用移植到Windows平台,必须购买专利授权。

2001年底,奇趣科技发布Qt 3.0,从这个版本起,Qt增加了对Mac OS X平台的支持。不过,直到2003年6月之前,Mac OS X版本的Qt也只有专利授权。当Qt 3.2发布的时候,奇趣科技才增加了Mac OS X平台的GPL授权。

2005年6月28日,奇趣科技发布了Qt 4.0。这是一个全新的版本,与之前的3.x系列不仅二进制不兼容,甚至API也不兼容。这在一定程度上使人颇有微词。

2008年6月17日,诺基亚公司宣布以公开竞购的方式收购奇趣科技,连同奇趣科技旗下的Qt。同年,诺基亚将Qt的名字更改为Qt Software,然后又更改为Qt Development Framework。在诺基亚的领导下,Qt的工作重心由桌面系统转移至诺基亚旗下的手持设备。2009年5月11日,诺基亚宣布Qt源代码在著名的git托管平台Gitotious面向公众开放,标志着Qt正式成为面向社区的开源框架。不过,尽管诺基亚承诺Qt开放源代码,但事实上Qt的代码提交与维护仍然牢牢掌握在诺基亚手中。2009年12月1日,Qt 4.6发布,这是第一个移植到Symbian S60平台的版本。

2011年2月,诺基亚宣布放弃自己的Symbian平台,转而投向微软公司的Windows Phone平台。一个月之后,诺基亚宣布将Qt的商业授权和专业服务出售给Digia公司。后者启动了Qt Project,同时宣布将努力促使Qt支持Android、iOS和Windows Phone三大平台,并且继续关注于桌面和嵌入式平台的开发。这意味着Qt正在努力成为一个全平台的开发框架。现在看来,在一定程度上,Digia的确做到了这一点。

Qt 4之后的下一个大的版本Qt 5原计划于2012年6月发布,但是由于诺基亚的政策调整和出售Qt的缘故,直到2012年12月19日,Qt 5.0才正式发布。这是继Qt 4之后的另一个大的升级。表面看来,Qt 4到Qt 5的改动并不比Qt 3到Qt 4来的激进,但是Qt 5引入了全新的硬件加速图形处理,并且将QML与JavaScript提升到同C++相等的地位。传统的基于C++的Qt Widgets仍将继续支持,但是全新的架构所带来的性能提升则更多作用于QML和JavaScript。

值得一提的是,Qt 5的开发真正由Qt Project社区驱动,现在Qt已经允许诺基亚和Digia之外的开发人员提交并审核代码。

Digia接管Qt业务以后,Qt的开发速度有了明显提升。2013年7月3日,Qt 5.1发布。Qt 5.1除了修改5.0版本的bug之外,更带来了Android和iOS平台的实验性支持。2013年12月12日发布的Qt 5.2版本,则正式引入对Android和iOS平台的支持;同时,Qt 5.2引入了一个新的场景图像渲染器,针对OpenGL后端提升了矢量绘制的性能,将GPU的占用降至最低。2014年5月20日,Qt 5.3发布。Qt 5.3改进了对iOS平台的支持,并且开始支持WinRT平台。这为Qt成为全平台的开发工具更进一步。

Qt授权

Qt的授权一直比较复杂,既包括商业授权,又包括开源授权,并且不同版本之间的授权并不一致。下面我们来详细介绍下有关授权的问题。

首先需要说明的是,Qt自发明以来一直都有一个商业授权。这个商业授权允许开发者开发专有程序。同时,Qt商业授权除了包含Qt开源版的一切功能外,还包括一些企业应用的组件,比如Qt Charts、Qt Data Visualization等;还有Digia公司支持的Qt培训等内容。

真正复杂的是Qt开源授权。Qt 1.45之前,Qt的源代码一直遵循FreeQt协议。该协议既不符合Open Source Initiative定义的开放源代码原则,也不符合Free Software Foundation定义的自由软件。在此协议下,Qt的源代码虽然可用,但是并不允许重新发布修改过的版本。

1998年,基于Qt的KDE成为Linux最流行的桌面环境之一。不过,因为Qt协议的问题,很多人担心这将给KDE桌面环境的发展带来影响。这也正是日后Qt协议问题的根源之一。

Qt 2.0的开源授权由FreeQt更改为Q Public License(QPL)。这是一个自由软件协议,但是与GPL不兼容,而后者才是Linux遵循的协议。作为妥协,KDE团队与当时的奇趣科技达成协议,即使奇趣科技濒临破产,也不能使Qt的协议比QPL更加专有。直到2000年,Qt/X11 2.2正式以GPLv2协议发布,才终结了这一授权的法律问题。

2002年,KDE on Cygwin项目开始将GPL授权的Qt/X11移植到Windows平台。此时,Windows平台还没有一个开源版本的Qt。不过,该项目并没有取得成功,但却直接导致奇趣科技在2005年6月将Qt/Windows 4以GPL授权的形式发布。至此,Qt 4在全部主流桌面平台都有了基于GPL协议的开源版本。随着GPLv3发布,Qt又增加了具有额外条款的GPLv3协议。这个“额外条款”允许将Qt编写的最终应用程序以不兼容GPL的自由软件/开源协议发布。

虽然此时的Qt已经有了自己的开源版本,但是作为一个类库,使用GPL协议开源具有一定的危险性。由于GPL的传染性,GPL不允许发布闭源程序。这种协议将极大地限制Qt在商业软件领域的应用。所以在2009年1月14日,Qt 4.5终于众望所归地增加了LGPL协议,允许使用Qt开发闭源程序。

尽管历史很复杂,但是我们的结论很简单:最新的Qt 5.3版本使用两种协议发布——商业协议和LGPL 2.1。