做windows界面,用QT还是MFC?

weibov5976


其实选什么学习还得根据自身的需求。语言不分好坏在于人。精通才是正道。当下window下流行的编程语言,有vb,mfc,c sharp,。如果没啥限制,建议第三个吧,简单粗暴上手快,开发效率也高。如果公司或硬件限制必须用mfc或其他语言,那学就是。都是微软的产品,我开发项目都用过,知识通用。至于qt封装是全,相对微软自家的产品,用的人少些。问题多靠自己解决


工控编程


使用Qt吧,前提是在这两者下进行选择。既然提到了Qt和MFC,我想题主肯定是一个C++的开发者。其实,在我看来,Windows下开发界面程序,还有很多其他的选择。下面我就连同Qt、MFC一起来介绍一下几种常用的界面开发框架。

  1. Qt,Qt之前是被诺基亚作为塞班操作系统的主力开发工具,后被广泛应用于PC领域的开发。Qt最大的优势在于它的跨平台特性,可以实现一套代码编写不同平台下的应用程序,目前多用于Linux系统下的GUI程序开发,Windows下也有一些使用。

  2. MFC.MFC的全称叫做Microsoft Foundation Class(微软基础类库),它是将Windows的基础api封装后的一个GUI开发框架。它最大的优势是可以直接使用Windows的系统api,实现程序性能的最大化。它的劣势在于逻辑太过复杂,会让初学者望而却步,事实上,很多大学计算机课堂上都已经不在讲授mfc(MFC背戏称为没饭吃)了。

  3. C#.咦,不是在讲C++吗,事实上,很多Windows下的程序都是使用C#快速开发出界面,在用C++实现后台控制,这样既能快速开发出好看美观的界面(C#优势所在),又能实现高效的后台(C++的优势),岂不快哉。

  4. WEB.既然C#都能开发GUI,那么比C#语法还要简单的web开发语言不行吗?当然可以了。这里举个栗子,大名鼎鼎的PC端词典软件有道英语词典正是WEB&C++搞定的。网易的大牛们使用WEB(如HTML5)技术快速开发出酷炫的界面以及网络通信模块,再用c++实现算法及其他控制模块,就这样最大限度的实现了界面的美观性和程序性能的整合。

当然,Windows下的界面开发技术还有很多,欢迎大家关注太科罗技,并在下方积极留言讨论。

太科罗技


强烈强烈建议你选择QT,原因如下:

1)QT比MFC用起来要简单的多,我当年花了很长时间都没搞明白MFC那一套运行机制,QT很快就能上手用起来了。

2)QT跨平台,MFC只能在Windows上用。这个跨平台我最近深有感触,我们做的产品在户外测试经常需要通过上位机查看运行的参数,带着电脑看没问题,但是不是很方便,于是我将windows下开发的QT程序直接换个工具链,就编译成安卓程序了,这样使用手机、平板也可以多人同时使用了,非常便利。

另外做嵌入式Linux的童靴肯定知道QT经常被用来开发嵌入式设备的ui。


TopSemic


简单原则是:你熟悉哪个就用哪个,如果都不熟悉,建议先学Qt。

首先,Qt支持跨平台,MFC只支持Windows平台。

其次,Qt开发效率高,MFC运行效率高。MFC是直接封装Windows API,运行效率略有胜出,但相比之下开发效率明显偏低。例如开发同样的复杂用户界面,Qt使用控件配合布局管理配合即可做出精美界面,而MFC需要掌握“自绘”和扩展编程,才可能达到类似效果,费心费力多了,甚至开发资历不深的人还不能胜任。

第三,源代码对比,你会发现Qt的源代码更优雅,阅读它你会学到很多面向对象的特性和多种设计模式,而阅读MFC的源代码你也会学到消息机制,不过由于历史原因,里面使用了很多宏进行代码封装,显得佶屈聱牙。

以上就是一名多年IT资深技术人的看法,以供参考。


超级码农冲呀


QT吧,windows平台毕竟不是长久之计,用QT后面方便转嵌入式开发


用户1284002920930


electron试试?


大钟楼145062414


大部分情况优先使用qt,开发用什么库主要考虑成本,如果你需要大量调用windowsapi 对界面设计没有太高要求可以考虑用mfc,如果不需要直接用qt吧,mfc好处是很多老人本来就会,winapi做了比较好的封装,不需要引用库。qt的优点就不用说了,太多了,比如跨平台,界面和业务代码隔离,界面设计方便基于qss等


老夏课堂夏曹俊


做Windows界面程序,最好用的是wpf和uwp。既然说了是Windows界面程序,就不需要考虑在非Windows平台上跑,此时说兼容性是多余的。mfc微软自己都是鼓励淘汰的东西,旧程序之所以在新系统上显示模糊,原因就是旧的mfc框架控件没有使用新系统的图像渲染技术。


TonyDeng


作为做了近2两年windows application的人来说,我直接说Qt!首先我主要做pc和下位机通信的app,如串口、tcpip、总线类等。选qt理由如下:【仅从我的经历来讲】

1、Qt开发效率高。我第一个项目前几个项目用的MFC,平均时长3个月,一个软件80%的时间都放在界面上去了。然后后面开始使用Qt,一个月能做好几个app没压力,界面布局很方便,不用像MFC去一个一个控件拖动。

2、Qt库简单易懂。个人的感觉就是MFC与win api联系太大了,你要玩转MFC,必须要把windowsapi相关知识搞得明明白白的。而Qt库把每一个功能都封装得很好,很容易去使用,不需要没事就百度怎么用。

3、MFC已经在淘汰边缘了。到如今Qt还在不断更新,我目前使用的是Qt5.9。在平时招聘的时候,也很少看到有公司让你专职做MFC,要么Qt,要么C#。

4、Qt跨平台。我当初换Qt的一个原因还是,我以后如果不做windows了可以换linux上位机,Qt可以做到很好的跨平台,而MFC不行。


judesmorning


具体选择QT还是MFC,这要根据题主的需求来决定。如果你入职一家公司,做的是老项目的维护,而原有项目是采用MFC来开发,那么当然,你没得选,只能老老实实的继续MFC,虽然这玩意写起来真的很虐心。如果是一个全新的项目,那么还是首选Qt。

下面根据自己的认识,推荐几款Windows下开发界面开发常用技术。

1)Qt

号称可以跨平台,语法结构简单清晰。面向对象的特性体现的比MFC明显。代码写起来比较优雅,也就是说上手会快一点,最新版本支持的特性QML,可以让我们用JS,CSS来绘制客户端界面,写起来效率也是蛮高的。缺点就是文档可能没有MFC那么齐全,基本只有官方的官网和Demo,而且发布包体积会比较大。

2)MFC

全称Microsoft Foundation Classes(微软基础类库),可以算的上是上古产品了吧,目前除了维护老项目,应该很少有团队使用MFC来开发了吧。基本上MFC == “没饭吃”。建议如果你是初学者,界面开发还是不要选择MFC了。它唯一的好处就是微软的MSDN文档比较齐全,相关论坛和那种问答的资源要多很多,一般初学者遇到的问题都可以看到前辈们的解决方法。不过目前它已经被其亲爹微软抛弃了。

3)Duilib

目前已开源,是一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。唯一不足的是原开发者已经停止维护,很多都是个人在维护,出了问题的话,只能自己去摸索,Debug。下面是一款个人使用Duilib开发的迅雷播放器界面效果。

最后附上一些基于Duilib开发的软件不完全列表(欢迎大家补充指正):

百度: PPS 爱奇艺 百度杀毒 百度卫士 91助手

阿里: 钉钉 支付宝安全控件 PP助手

书生云: 书生企业云盘

微软: 微软壁纸

网易: 易信 云音乐 荒野行动PC版

华为: 华为网盘

金山: 金山快盘

京东: 咚咚

cctv: cbox

酷我: 酷我音乐盒

蘑菇街: TeamTalk

火绒: 火绒安全软件

盘古: 盘古越狱工具

顺网: 网维大师 91y

网狐: 网狐经典版

墨迹风云: 墨迹天气

zoomcloud: Zoom 视频会议

搜狗: 搜狗手机助手

沃通: 沃通代码签名工具

驱动人生: 驱动人生 人生日历

维棠: 维棠

深圳市北斗智研科技: 智能办公助手 ERP管理系统

4)Electron

这玩意应该是这几年才火起来的吧,宣城自己可以通过使用JavaScript、HTML和CSS构建跨平台的桌面应用程序,让人们感觉JS真的有一统天下的趋势(Web、移动端、PC客户端)。开发效率真心的高,不过貌似商用上还不是特别的多,典型的成功案例目前知道的有VSCode,Atom。


分享到:


相關文章: