参考文档:https://blog.csdn.net/shenziheng1/article/details/52556763、http://www.mamicode.com/info-detail-2428809.html、百度百科
一、Qt是什么
- 全称:跨平台C++图形用户界面应用程序开发框架。(支持在linux、Windows、Mac等多个平台开发,开发语言为C++)
- 历程:由Qt Company开发(1991)-> Qt Company科技被诺基亚公司收购(2008)-> Qt被Digia收购(2012) -> 至今
- 功能:Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程
- 能做界面的同类工具:MFC(windows),GTK+(GNU)
二、Qt的由来和发展
- Qt的由来:Q来源于创始人对于字母Q的一个喜爱,而 t 则代表着ToolKit。
- Qt的发展:
-
Qt版本的更迭及意义
年份 版本 意义 1995年5月20日 Qt0.9 这是Qt第一个公开发行的版本,既可以在Windows上的程序开发,又可以用于UNIX上的程序开发。Qt就提供了两个版本的软件许可协议版本。一个是进行商业开发所需要的商业版本,一个是适用于开源开发的自由软件许可版本。 1997年4月 Qt 1.2 Matthias Ettrich利用Qt建立KDE的决定,使Qt成为Linux环境下开发C++图像用户界面的事实标准。 199年6月 Qt 2.0 该版本有有一个新的开源许可协议——Q公共许可协议(QPL,Q Public License) 2001年 Qt 3.0 Qt已经可用于Windows、MacOS、NUIX、和Linux(桌面和嵌入式)平台。Qt 3 提供了42个新类和超过500000行代码。 2005年夏 Qt 4.0 Qt4 也是第一个能够在其所有可支持的平台上既可以用于商业开发又可以用于开源开发的Qt版本。
三、为什么选择Qt(相比)
Qt是一个跨平台图形库,MFC是WINDOWS API封装的C++形式,GTK+是 LINUX下桌面系统比较通用的库。
- Qt 与 MFC 相比较
支持平台:QT的应用主要在Linux下,但是它本身是跨平台的,也支持其他操作系统,是现在比较著名的界面库,著名的KDE就是使用QT开发的。MFC是提供给VC的,但是它主要是代码库,不像VCL和编译器挂钩很多,但是MFC主要是对windows API的封装,所以只能用于windows平台。
开发速度:整体来说可能MFC会快捷一些,因为windows平台的开发工具大多很智能,因为立足于windows的开发人群很广,从菜鸟到专业人士,但是QT由于基于Linux,可用的开发工具不多,大都比较专业,多是第三方产品,而且集成度不大,第三方库也没有MFC的多,从这一点MFC略胜一筹,但是QT自从被Nokia收购后,官方发布了跨平台集成开发环境QTCreator,所以之后走向就不好说了。但是从库本身来说QT集成的功能较MFC庞大,而且使用的封装技术信号和槽也是比较受到赞许的,比如QT Script为QT提供嵌入式脚本,QT界面库支持CSS,所以QT做出来的界面比MFC要好,而且比较容易,MFC就需要借助第三方库了。因为MFC是浅层封装(最新的2008 sp1加入了BCG的高级界面库,可能有所改善)windows SDK,以降低使用windows SDK引起的开发效率的降低,和开发难度的增加。所以QT库是比MFC优秀的,两个库都经受了时间的考验,稳定性都很高,Bug几乎没有。
运行效率:MFC由于其浅层封装的特点,所以运行效率是比较高的,加上vc对windows的针对性优化,整体性能是比较高的,但是如果加入第三方库就不敢保证了QT因为库比较庞大,封装层次较深,所以运行效率较MFC为低。
应用范围:现在windows的普及范围谁能比过,所以MFC的客户量比较多,QT主要是Linux下的开发人员在使用,但MFC也只是得益于windows(感觉又是一次捆绑战略),MFC不支持嵌入式开发(主要指手机平台),但是QT有对应的模块。
学习难度:QT的封装哲学比较明晰,和系统隔离的比较好。MFC较难精通,因为深入开发之后SDK还是要了解的,否则程序感觉比较儿童化。
2. Qt 与 GTK+ 相比较
虽然Linux下的大多数开发是基于字符界面的,但在Linux环境下也可以开发出美观大方的图形界面。经过多年的发展,目前已经存在多种用于在Linux下开发图形界面程序的开发包,其中较为常用的是Qt和GTK+。
Qt是一个跨平台的图形用户界面开发库,它不仅支持Linux操作系统,还支持所有类型的UNIX以及Windows操作系统。Qt良好的封装机制使它模块化程度非常高,可重用性很强,Qt提供了丰富的API供开发人员使用。使用Qt开发的图形用户界面程序具有良好的稳定性和健壮性。桌面环境KDE就是使用Qt作为其底层库开发出来的。
由于Qt使用C++面向对象编程语言作为其开发语言,而许多在Linux下从事开发的程序员更喜欢或更习惯于用C语言。GTK+使用C语言作为开发语言。它基于LGPL授权,因此GTK+是开放源代码而且完全免费的。GTK+简单易用,执行效率高。基于这些原因,GTK+拥有为数众多的拥护者。Linux的桌面环境GNOME就是建立在GTK+基础上。