现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

一点体会:Qt和MFC对比及Qt跨平台优势

2014-09-03 05:59 工业·编程 ⁄ 共 1316字 ⁄ 字号 评论 3 条

一、Qt的优势

1.跨平台

2.signal-slot机制太漂亮了,与MFC相比,其非窗体类也支持该机制,这点设计者的想法让人佩服,并且由于其非窗体类也支持该机制,所以其很多用法让人感觉眼前一亮,如QTimerEvent的使用,不管是不是窗体,都能支持定时器,这一点比MFC要灵活了许多

3.容易上手,很多机制和MFC差不多

4.一定程度上简化了内存回收机制,这点比MFC强的多,当然采用框架使用MFC也可以做到这一点,但是要自己实现框架

5.开发效率比MFC高得多(MFC 7年老鸟的评价)

6.一个平台生命力是否旺盛,主要看技术优势,文档还有就是使用人数,Qt这三点都具有很大的优势,如果能提高在嵌入式平台上的运行效率,那就更完美了。

7.C++终于有可以让人赏心悦目的GUI库了

二、Qt的不足

1.编译起来,时间实在是有点恐怖,目前和VS还是没有办法比的,也有可能是我用惯了VS

2.signal-slot 映射机制采用connect的方式,其调用规则为把调用接口转换成字符串格式,这个编译时刻不能检测出语法错误,这一点不太理想

3.运行效率不如MFC,Qt在其文档上已经明确说了,其界面效果依赖于本地界面引擎,当然我也清楚,依赖于本地引擎,对于Qt来说是非常明智的,但是就嵌入式系统,运行效率往往是致命的,所以个人希望Qt不要越做越大,短小精悍最好

4.国际化方法不是内置支持的,而需要程序员来指定所用的编码,这点令我感觉到很不习惯,尤其是和MFC比,其国际化方式在UNICODE版本下是内置支持的

5.进程间通讯(IPC),这个问题暂时估计还不会有更好的办法,尤其是和非Qt应用程序进行通讯。

三、关于跨平台

1.跨平台的意义

       很多人总爱拿跨平台说事,其实跨平台对你有用才有意义,你开发java应用程序,却只在windows上跑你的应用程序,跨平台对你有意义嘛!?你还吐沫腥子乱飞,吹什么牛啊!

2.Qt的跨平台与其它语言的不同

        无论java还是C#它们跨平台的特点是一次编译到处运行,而Qt的跨平台,恰好是反过来的,一次编写到处编译,但是却充分发挥了C++的效率,呵呵这个优势不用我说了吧。

3.Qt的出现对嵌入式系统行业的贡献

         个人认为,现在无论是桌面应用程序开发还是嵌入式系统开发,都面临着一个非常严重的问题,就是没有一个标准的语言框架,这个无论是java和C#,都解决不了这个问题,而Qt能。

         据我所知,Qt现在能在个人电脑上跑,能在嵌入式系统上跑,她能跑得操作系统有,windows ,linux ,solaris ,mac,wince ,vxwork等等,著名的Photoshop Album就是用它编的,只需要重新编译而已,而java的跨平台,某些程度上是一个笑话,据我所知以上我所提到的系统,java并不是无缝的。

         我是做运动控制的,物联网和嵌入式系统行业都缺什么,它需要解决的一个问题就是语言问题,如果大家用不同的语言开发不同的节点,还谈什么融合啊,因为不能做到技术普及,发展始终受限!

四、学Qt没错

          学吧,肯定不会后悔,而且搞VC的,这个东西很容易上手。

作者:无为小丑

目前有 3 条留言    访客:3 条, 博主:0 条

  1. 爱求索 2014年09月20日 6:06 上午  @回复  Δ1楼 回复

    不管是windows还是linux都不可能有真正意义上的事件触发机制。

    真正的事件机制是这样实现的:就像硬件的硬中断一样:
    有信号的时候就置1,这时候就执行命令,就像你操作一台设备按下了”启动”按钮一样,而我们的操作系统没办法用硬中断,只能借助于软中断,也就是轮询方式。不管你是mfc的消息队列,还是qt的signal-slot,都一样,你不操作的时候,设备仍然在一个类似死循环一样的等待中,和硬中断的效率差太远了:)
    我觉得qt最大的优势就是开源,这个赋予程序员的将是远胜过mfc的灵活性!

  2. 爱求索 2014年09月20日 6:06 上午  @回复  Δ2楼 回复

    优点:跨平台,qtquick可以ios,andriod。文档好,范例多。python/lua扩展。
    确定:跨平台造成很大负担,社区太小,开源晚了。未来去向不明朗。

  3. 爱求索 2014年09月20日 6:14 上午  @回复  Δ3楼 回复

    Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。

给我留言

留言无头像?