浅析 Qt 界面库

移动开发
QT有商业版本和开源版本,被NOKIA收购后,开源版本使用的协议是LGPL,就是说,你把QT当作是一个库,你不修改库只是调用库的话,是免费的,而且你的代码不需要开源,只有针对QT库的改动部分才需要开源。

Qt 界面库是本文主要讲述的内容,下面一段话来自坛子里。对于QT,其实也是一个不错的选择。linux,C++写界面基本上都是用它。这个东西是跨平台的。手机上也有。

问题就是这个东西到底免费还是不免费谁的不知道(linux上是免费的,我的是windows)。他又插件直接集成进VS2005,2008,然后想MFC那样花界面。如果熟悉,开发效率跟MFC是一样的。网上我以前找过,还是有不少的,毕竟这个东西也很久之前就开发出来了。 问题是这个很难招到这样的人才。得靠自己去培养。

对于QT的描述,我不认同仁兄的看法。

首先,QT有商业版本和开源版本。被NOKIA收购后,开源版本使用的协议是LGPL,就是说,你把QT当作是一个库,你不修改库只是调用库的话,是免费的,而且你的代码不需要开源,只有针对QT库的改动部分才需要开源,所以,LGPL这个协议是很适合开源库的商业用途的。

其次,使用QT开发标准GUI界面,比MFC的开发效率至少高一个数量级。因为QT库比MFC庞大很多,而且QT的许多机制比MFC先进很多。如果认为QT仅仅是一个跨平台界面库,那就小看它了。我要说的是,它不但是一个通用的跨平台的面向对象的应用程序接口库(包括GUI、数据库、网络、多线程、XML、数据容器和算法等,常用的编程资源都有封装,就是说,这些都可以跨平台,而不仅仅是界面),更是一种C++语言的扩展,一种编程平台和应用程序框架。

信号和槽的机制简化了对象之间的通信,比MFC的消息映射直观多了;界面的布局管理机制使开发人员可以很轻松地编出优雅的窗体;界面语言翻译机制也很方便实用;QObject容器管理可以看到Qt在内存管理方面的努力;扩展的foreach循环结构也向现代语言靠拢;QT在界面层多封装了一层QStyle,开发者甚至可以使用CSS定制出一套界面来……如果仅仅是开发标准的GUI(使用通用的控件),开发效率会很高,接近于.NET窗口编程。

第三,QT自带的控件库比MFC丰富多了,而且还有很多扩展库和第三方的控件库,同样是LGPL开源的。QT提供了VS各个版本的插件,因此在VS上开发QT程序比使用其它UI库方便很多。

第四,运行效率问题。QT使用了很多高级机制,使它的效率确实比MFC。比如,QT在界面层多封装了一层QT样式,在运行时可以使用不同风格的样式,即类似于换肤功能(不同的是,它由QT框架直接提供)。所以执行效率比不上原生操作系统的界面库(如MFC、wxWidgets等)。但是,QT界面库的效率还是比WPF、.Net、Java高几个数量级的,毕竟QT开发出来的是机器码,不是虚拟机或解释程序可以比拟的。

第五,程序大小的问题。QT库的确很大,最基本的两个动态库文件,QtCore4.dll有2M多,QtGui4.dll有7M多(4.6.2),所以在发布软件的时候,还要带上这些动态库文件。当然,使用QT静态链接库要好一点。至于使用静态链接好,还是使用动态链接好,这里我不加讨论,没有***,只有最适合的(MFC也有这个问题)。

第六,跨平台问题。跨平台的确很诱人,尤其是做嵌入式设备的。楼主的项目是什么我不了解,因此这里不妄加评论跨平台问题。

第七,人才问题和培训问题。在中国,MFC/Win32开发人员是最多的(不谈虚拟机平台编程),因为学校学的就是这个。而会QT的真的很少。不过鉴于Nokia的大力支持和开源为LGPL的手段,我相信会QT的会越来越多。QT的学习也不会想像中的难,毕竟它只是一个库(应用程序框架)而已,上手不会太难,不会比MFC久。

第八,帮助资源问题。QT的资源很丰富,其自带的Assistant相当于微软的MSDN,各个接口和编辑元素的说明都很详细,不过都是英文的,跟MFC一样。网上QT社区也不少。毕竟,QT比MFC,甚至比Windows还年长!

***,声明一下,我不是QT的枪手。程序员无枪手。他们都很纯朴。我们公司仍然在使用MFC,但是嵌入式设备装上一个正版Windows XPE,毕竟太奢侈了。另外用MFC做界面真的很痛苦,我们公司的好几个项目都在向QT转型。在界面库选型上,我们也花了不少时间,从开源的wxWidgets,到商业的一些大大小小的界面库,***选中QT

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-10 09:09:38

Qt Creator OpenCV

2011-06-10 13:21:00

Qt 网络

2011-06-21 14:01:07

QT 界面库 Embedded

2011-06-13 11:07:22

QT 移植

2011-06-09 18:05:00

QT MySql

2011-06-20 15:13:08

Qt 对象模型

2011-06-10 11:24:08

Qt Quick Designer

2011-06-13 14:29:40

Qt Designer

2011-06-15 18:00:26

2011-06-21 09:33:49

Qt 启动 界面

2011-06-10 15:00:02

Qt VC

2011-06-09 18:24:36

QT Wince

2011-06-22 14:04:33

Qt 元类型 注册

2011-06-28 17:21:50

QT UI designer

2011-06-21 14:53:25

QT 界面美化 QStyle

2011-06-29 15:14:22

Qt Embedded 键盘

2011-06-29 15:36:21

Qt Embedded 键盘

2011-06-10 14:33:38

Qt VC.NET

2009-09-16 10:53:50

Flex界面

2011-07-04 16:57:36

QT 布局 界面
点赞
收藏

51CTO技术栈公众号