[转帖]QT的优缺点,你总结过吗?_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 7355 | 回复: 0   主题: [转帖]QT的优缺点,你总结过吗?        下一篇 
clover
注册用户
等级:少校
经验:843
发帖:73
精华:0
注册:2013-6-28
状态:离线
发送短消息息给clover 加好友    发送短消息息给clover 发消息
发表于: IP:您无权察看 2013-6-28 15:22:53 | [全部帖] [楼主帖] 楼主

代码规范、月任务这些前期工作已经完成,下个月就要用QT重构原来在Windows Mobile和symbian上的两套代码了。之前用过QT画窗口,QT编写的软件也用过不少(KDE),但没有真正开始学。今天算是系统性学习的第一天。
虽然学的很浅显,但我也说一下学习的感受。

QT主要的优点:
1.标准的C++风格,使面向对象设计比较容易
  MFC实际上是C with Class,强调与Windows SDK的无缝兼容,所以写MFC的时候,最要命的就是代码容易乱,你可以把后台功能独立,但前台一锅粥很难避免,所以长期以来,我用MFC编程一般不用来写太复杂的窗口,既然它本身面向对象并不彻底,我干脆就用C语言的方式使用它,数百行的overall.h和overall.cpp是我每个MFC工程里都会出现的。
  QT的面向对象抽象做得很好,各模块划分非常清楚,下一步的面向对象设计,压力应该减轻了许多。

2.功能封装十分完善,基本上可以独立使用
  个人最反感的就是库的混用,尤其是Windows SDK+STL、MFC+Boost之类的,设计原则和风格完全不同,很容易造成极其严重的问题,通常,这种混用的工程你把它改好的代价比你按照流程重新写的代价还高。
  本组的代码规范是由我制定的,翻了下QT的教材,令我放心的是,至少我们重构的这一块儿,可以完全扔掉STL、CRT以及第三方网络及多线程支持了。

3.信号+槽机制易用性较好
  相对于MFC的宏消息,QT的信号+槽很容易使用和调试,代码也更漂亮。

4.实现了自己的“类STL”库,统一了行为
  对于symbian这样对STL支持比较差的环境,跨平台能力大大加强了,Windows下我以前也是尽量避免STL,一是VC的stream效率太低,而是string等的实现各STL版本家差距过大,线程安全难以保证。
  现在,我基本可以放心使用,但是对stream我还是持保留态度。

5.强大的布局能力
  这是我到目前为止QT给我最大的惊喜,强大的自动布局能力,使得QT下用代码写界面可能比MFC画界面还高效(个人感觉QT下写与画的差距并不十分大),并且,对话框也不用像以前那样固定大小,控件自动匹配窗口的能力很强。这一点给予了QT在C++界最高的界面开发效率。

6.命名
  几乎和C#一样的命名规则,让我这个Windows用户很习惯。

QT的主要缺点
1.太肥……
  一个core就2M,gui又是几兆,启动速度和C#有的一拼,这是两个最基本的库,不清楚如果那天某个大程序吧QT的所有库全用完了,启动一个exe是不是比4G发行版的linux还慢?这就是“完全”跨平台的代价,Windows已经载入到内存中的界面/网络/线程等等的支持,全都用不上。

2.风格太C++了……
  这是不是和之前的矛盾呢?不,从QT几乎自己实现了一套STL看,QT对C++primer里那套东西是很看重的。不引发口水战了,说过编程规范是我定的,其中有一条就是——请使用QFile的直接io,一般情况下不要像教材那样在套上一层QDataStream;禁止文本或流方式读写文件,读写全部二进制操作,要格式化请处理字符串。

3.国际化……
  严格来说,QT的国际化比MFC要好的多,但是一个很严重的问题是——对于中文用户来说,基本都是用中文版系统的,但是QT必须显式设定字符编码才能显示中文(实际上这样做国际化支持会比较好),但个人很不习惯。

4.线程问题……
  QT不是Win32线程,太要命了……




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论