A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

shark皓

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© shark皓 初级黑马   /  2019-5-13 15:07  /  4256 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

虽然学的很浅显,但我也说一下学习的感受。
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线程,太要命了……

2 个回复

倒序浏览
发光并非太阳的专利,你也可以发光。加油
回复 使用道具 举报
加油,一起学习丫
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马