我来作为转到Qt还不久的新人来谈谈对Qt的总体感觉吧。iPhone4的热卖已经说明了Applications的重要性,先不说智能手机,就算在平板领域,Android的落后,就是因为应用没有跟上。
其实目前使用Qt开发的程序还是很多的,列举几个我们比较熟悉的:Adobe Photoshop Album, Amazon Kindle, Autodesk Maya, Google Earth, KDE Display Manager, KeePassX, KOffice, Konqueror, Skype, VirtualBox, VLC media player.
【KDE/Qt和GTK/GNOME的素来的斗争】*
在 Unix 的图形界面一向是以 MIT 的 X Window 系统为标准, 可是在商业应用上有两大流派,一派是以 Sun 公司领导的Openlook 阵营,一派是 IBM/HP 领导的OSF (Open Software Foundation) 的 Motif, 双方经过多年竞争之后, Motif 最终胜出,成为最普遍使用的界面库, 后来双方又妥协出一个 CDE(Common Desktop Enviroment) 作为一个标准的图形界面。 但是Motif/CDER 的价格非常昂贵,在这同时微软的 Windows 图 形界面发展速度非常快,而 Unix 界的后起之秀 Linux 也急需一个可靠并且免费的图形界面。
1996 年 10 月,由开发图形排版工具Lyx的德国人 Matthias Ettrich 发起了 KDE 计划。 KDE 的全称为 K Desktop Environment,可以看出是针对 CDE。 KDE 本身 是采用 GPL 宣言的,但是 KDE 却是使用 Qt 来作为其底层库,因为当时 Qt 已经将其 Unix 版本自由发布了,但是 Qt 并不遵循 GPL, 因此 KDE 被很多自由软件的作者攻击,认为利用非自 由软件开发违背了 GPL 的精神,于是 GNU 的狂热信徒兵分两路,一路是去制作 Harmonny,试图重写一套兼容于 Qt 的替代品,另一路是由一个 26 岁的墨西哥程序员 Miguel De Icaza 领导 下重新开发一套叫 GNOME(GNU Network Object Enviroment)来替代 KDE。 feedom.net由于 Linux 界的老大 RedHat 不喜欢 KDE/Qt 的版权,因此 RedHat 甚至专门派出了几个全职程序员来加入 GNOME 进行开发工作,于是一场同 Motif VS Openlook 相似的圣战就这么打起来了。Trolltech 为了 KDE 曾数次修改 Qt 的版权,从成立 KDE Free Qt 基金会到采用 QPL,可谓是费尽心机,但是 GNOME 采用的 GTK 一开始就是完全的 GPL,因此在这个方 面 GNOME 有一定的优势,加上Qt/KDE 采用 C++ 开发,入门的门槛比较高,而 GTK/Gnome 采用 C, 因此 GNOME 吸引了更多的自由软件开发者,但是KDE竟先走了一步, 推出的 KDE1.1.2 十分稳定, 而当时急忙中推出的 GNOME1.0 的系统稳定性奇差,有人甚至笑称 GNOME1.0 还没有 KDE 1.0 Alpha 稳定。但是 GNOME 后来发展比较快,大有迎头赶上的势头。当时双方的开发者在网络 上炒得天翻地覆,连Linux 之父 Linus 只是说了一句喜欢用 KDE 都倍受指责。
战争到了第三个年头,也就是2000年,可谓是风云突变,一个接一个重大的事件先后发生: 首先是一批从 Apple 公司出来的工程师成立了一个叫 Eazel 的公司替 GNOME 设计界面,然后是一批 GNOME 程序员成立了一个 Helix Code 公司替 GNOME 提供商业支持,而大家期待以久的 KDE 2.0 也终于发布了,这恐怕是目前最为庞大的自由 软件了之一,除了 KDE 本身,还包括 Koffice 套件,和集成开发环境 Kdevelop 等等大批软件,其主力软件 Kounqueror 也是第一个可以同微软的 Internet Exploer 相抗衡的浏览器。 而 Sun 公司,Red Hat 公司, Eazel 公司,Helix Code 等一批公司成立了一个GNOME 基金会, Sun 还宣布将把重量级办公软件 Star office 同 GNOME 集成, Trolltech 公司自然不能坐以 待毙,于今年 10 月 4 日将 Qt 的 free edition 变为 GPL 宣言,彻底解决了 KDE 的版权问题, 又推出了嵌入式 Qt ,给了 GNOME 阵营一个有力的回击。到现在为止,这场战争还在继续,相信我们不能很快看到结果。一般说来, 目前 GNOME 吸引的公司比较多,但是 KDE/Qt 的开发的效率和质量比 GNOME 高,而且在 Office/嵌入式 环境中先走一步,在一定时间内还将处于优势地位。
那么对于用户来说,如何在 Qt/GTK 中作出选择呢?一般来说,如果用户使用 C++,对库的稳定性,健壮性要求比较高,并且希望跨平台开发的话,那么使用 Qt 是较好的选择。
【Qt的优势和劣势】
先说说优点吧,这点在Nokia的Qt网站上已经写得非常清楚了:
首先,Qt有比较完善的开发工具,相比较gtk,最为商业版本,它的开发工具界面更完整,功能更完善一些。Qt的UI designer感觉还是一个非常不错的工具。
2010年10月起,Qt将作为诺基亚独一的应用开辟框架,以确保应用法度榜样可以或许实用于Symbian的将来改革和即将推出的基于MeeGo平台的产品。诺基亚将Qt Quick引入Qt框架中,加快开辟丰富的用户界面和最具视觉享受的应用。Qt对HTML5的内置支持,实现了诺基亚在Web浏览器上支持HTML5的想法。
其次,Qt是一个有广泛支持的平台,有不少的发行版已经首选KDE (基于QT的窗口管理器),例如Kubuntu, OpenSuse,等。目前Qt已经支持下述平台:Windows、Unix/X11 – Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台、 Mac OS X、Windows CE、Symbian。
可能以前由于授权方面的问题,很多程序员选择了GTK,但是现在NOKIA已经发布了开源的版本,这个版权已经不是问题了!还有一个区别就是 Qt做出来的图形界面比GTK的好看,因为QT可以生成操作系统原生的界面。如果你是一个C程序员,可以选择GTK,特别是开发gnome桌面的程序,但是在嵌入式平台,我个人推荐选择QT,因为QT在嵌入式平台的开发和应用非常的成熟。
这个做法好处之一是,对于Symbian和MeeGo的程序,只需要做一次开发,就可以应用于不同平台。同时,也保证了Symbian平台操作体验的良好延续性,即升级的无缝。
实际用Qt Creator看一下开发的界面,就会了解诺基亚所说的,一次开发,多平台应用:
我自己的话说就是linux下的QT就是Windows下的VC6,只不过后者更为人性化而已,前者则大多需要再命令行下面完成指定的功能,不过QT里面丰富的类的确为我们的开发节省了许多时间。
此外,Qt Sdk里面附带安装了一个Qt Demo,里面有很多Qt的实际例子可以看,并且附带了源代码,qt是一个用C++编写的一个gui库。而且跨平台性非常好。可以运行在Windows、Linux、Symbian等多个平台。
Qt Create是轻量级IDE工具,而且开源免费,在这点上久比VC++昂贵的价格要好很多。但是qt的商业版要另外收费,而且价格不菲vc++继承了微软的很多特性、简单易用,而且有中文版本。Qt Create色调上给人感觉有种耳目一新的感觉。从编译的速度上来考虑。Visual studio和Qt Create的编译速度都很慢。
Qt平台很大程度上是做应用开发的,但是采用C++语言,使得Qt想底层开发也可以,应用层也可以。
mfc使用的是消息循环机制。qt使用的是信号与槽的机制。我自己学习的时候,就同样的当成事件来看待了。从学习的难易度来看的话,qt要更容易上手。mfc里面定义了大量的宏大量的类,虽然说不用全部记下来,但是要去查询也是需要点时间的。而且同样创建的一个空白项目。qt更容易去写代码。
以MeeGo为例,开发及是N900,因此模拟界面上也是一台N900。
Qt语言的掌握门槛相对来说是比较低的。
接下来,也要提到一些Qt的不足之处:
VC++编译的只能运行在windows系统下,而qt跨平台行做的更好。所以这也肯定导致了qt的执行速度要比VC++的慢。但是优秀的程序员可以通过算法或者设计模式来优化速度。
Qt将朝类Java方向发展,便界面将不需要代码,不需要C++,做好鼠标操作就行,做好每个组件的封装,调用就行。然后就像做flash一样一个应用程序就这样用鼠标快速的出炉了。。。不需要手写任何代码…(原来应用程序能这样做) 而诺基亚这样做的理由是现在的C++程序员越来越少,年轻一代的程序员,喜欢用Java一类的东东编写程序。C++程序员一直都算是比.net和java少的。Windows占据了PC系统90%的领域。不过也侧面反映了微软的捆绑战略。但是谢敏童鞋看得比较准,现在平板电脑正在发展!未来的情况也不说我们几个学生说得准的。windows会降低但是不会消失。平板电脑要替代PC电脑,也不是一下子的事情。所以Qt和VC++,同样都是很有前景。
【具体回看N9/MeeGo】
再来看一下目前Symbian^3和MeeGo上的程序,诺基亚Symbian^3 现有的程序基本都覆盖了常用的范围,也不乏一些杀手级的应用。
目前N9的Ovi商店上,除了常见的: 街旁 大众点评 QQ 新浪微博 招商银行理财 等优秀应用之外,
还有下面这些程序在Symbian^3上是有的,非常容易就可以补全:
多媒体类:奇艺 优酷
系统管理类:360 来电通 安全管家
输入法:搜狗输入法
游戏:水果忍者
浏览器:UCWeb
其他:手电筒
因此,可以理解为,N9目前已经继承了部分N8/C7等的应用资源,有了一个不错的开头。期望将来能够有更多常用的好用的应用出现。当然,因为Qt开发对于个人开发者的简便性,即使是个人想做一个自己的应用也不是什么难事,如标题那样:让Qt无处不在吧!
*[注]【KDE/Qt和GTK/GNOME的素来的斗争】这部分是参考了老文《著名的自由软件圣战- “KDE/QT .VS. Gnome/Gtk”》