首页 > 编程语言 >三大主流平台开发桌面程序的七大优劣势详解

三大主流平台开发桌面程序的七大优劣势详解

时间:2023-03-07 18:12:25浏览次数:53  
标签:mfc 桌面 qt 详解 相关 wpf 优劣势 三大 进行

三大主流平台开发桌面程序的七大优劣势详解

2023-03-01 14:19·工控自动化编程

软件开发环境QT,MFC,WPF等相关的对比详解

嗨,大家好,我是兆千图网络科技,很高兴站在这里跟大家分享一些开发相关的技巧,我们在软件开发行业摸索了十多年了,站在开发的角度,今天就来跟大家交流一下qt,mfc,wpf等相关的桌面程序开发中的便利与苦恼吧。

 

qt搭建桌面程序

qt是目前来说比较火爆的一款开发软件环境,其积累了C++,qml等相关的算法和界面框架,同时其还是兼容vs下的C++库,比如,windows下希望能够开发CH375相关的串口通信,那么完全可以调用qt+vs环境,调用vs下的mfc库进行联合开发。

qt能做的事情实在是太多了,再如比较酷炫的粒子效果,qml搭建漂亮的界面,多线程进行通信相关的开发,加载数据库,字符串相关的转换,等等,这些简单常见的功能,被qt做的实在是太到位了。

这也是为什么工业上大家都选择他的原因:界面能拿得出手,通信,数据库都封装的特别到位,而且使用起来非常的简单,你只要英语足够好,完全能够搞定它。

 

而且你想调用的库都在,而且其最有优势的地方就是,不需要重新去进行其它语言的重修,你擅长c++就直接使用c++即可,当然,你想往qml下发展,也可以根据官网提供的demo进行自我学习和发展。

qt下的开发环境,目前最大的优势就是强大的demo库,以及其强大的pro文件,你想要调用相关的库文件,只需要将pro文件中进行相关的配置就好。

如果你长期使用qt,我相信你一定知道兆千图网络科技在说的是什么哦!

那么接下来我们来说一下桌面程序大家常常会使用的mfc。

 

mfc开发桌面程序

mfc在桌面程序相关的开发中,可谓说是比较老的,传统的了,你在进行相关的开发过程中,只需要进行相关的逻辑填写即可,不需要知道内部是如何进行实现的。

比如,这个里面常常使用的对话框程序,你只要将对话框拖入到视野中,将你想要实现的功能进行按钮事件相关的触发,编写相关的按钮事件内容函数进行按钮触发相关的内容的实现即可。

 

其对于小白刚刚入行来说是比较不错的一个选择,而且,网上关于mfc的介绍资料也是非常的多的。

但是,其关于数据方面的转换,还是有很多坑的,如你所要使用的string,char,其实本质上还是有很多差异的,有时候,我们仅仅使用format函数进行相关的转换还不能实现想要的功能,而且我们在mfc环境下使用数组也好,指针也罢,其进行整体赋值操作,依然要遵循vs下控制台程序中的调用数组指针等相关的初始化流程,是我们暂时无法进行修改的。

当然,你想简化的话,就需要自己编写相关的源码函数进行简化功能的实现了。

那么接下来我们一起来看一下wpf下的桌面程序开发吧。

 

wpf开发桌面程序

wpf在2014年左右是相当火爆的,那会,大家都在纠结使用winform还是wpf,但是最终还是被wpf的xaml语法而吸引,最终还是选择了wpf进行优美界面相关的开发了。

wpf其实跟上面两个进行对比的话,明显是有不足之处的,因为其不存在所谓的头文件,能够封装的全部都在using namespace中,而你要想调用相关的库,就需要添加所谓的命名空间,这样就很尴尬,很多时候我们并不知道要添加什么库。

还有坑的地方就是,其存在相关的库的多态性,咱们根本不知道人家要让我们使用哪个库进行调用,还好,其给自己留了一个不错的工具,就是使用alt+enter自动添加库,不然语法出错,我们都不知道错在哪里了。

 

他更坑的地方还不在这里,更加坑人的地方是,C#本身就不支持强制类型转换,可能你进行int和ushort类型的数据转换,需要强制加所谓的类型,不然他就会报错,我觉得这是所有老开发人员不能容忍的事情吧。

据我们所了解,使用这么多框架的老开发人员,在谈到这个wpf的时候,都是哭笑不得的!

大家清晰了上面三者的开发特点后,接下来我们来总结一下三者之间的优势和劣势吧:

三者之间的七大优势和劣势详解

1 wpf自带查错功能,这是mfc和qt不具备的功能;

也就是说,我们在代码开发中,一旦发现下面有编译错误了,只需要按住alt+enter键即可自动进行相关错误的更改。

但是这个仅仅是对相关的库的缺失比较好用,如果变量相关的定义错误的话,这个功能是很难提供正确的修改方法的哦!

 

2 wpf不存在h文件,内部实现接口不外放是其常见劣势;

wpf中的函数,基本上都包起来了,我们是无法看到其具体实现方法的,这对于开发者来说可能就是最大的失望了吧;

3 wpf的xaml对于三维建模是非常有利的;

关于3D仿真相关的开发,是这些个平台都支持的,但是很少有平台能够外露数据让你进行模型的搭建的,但是wpf可以,也就是说,如果你是机械设计师,使用的solidworks进行建模,那么转移到wpf是非常容易的。

 

4 qt下的数据转换做的非常棒,是其它两个平台无法匹配的;

qt下,你不必但是string类型的数据无法和char,int等进行相关的转换,一个toint或者tostring就可以搞定,这是mfc和wpf永远无法赶上和超越的。

5 纯qt下debug模式断点比较卡,但是可以使用qt+vs下断点调试;

我们使用qt下migw平台进行程序的调试,debug模式下的断点是非常卡顿的,这是qt下最大的败笔,但是我们可以搭建qt+vs进行相关的断点调试阿,总体来看qt下的这点败点还算能够接受吧。

6 mfc和wpf下断点还是非常轻松搞定的;

在wpf,mfc下断点调试非常流利和舒服,这是qt不能匹敌的。

 

7 mfc下的类视图分的特别清晰;

mfc作为老平台进行界面开发,其清晰的类图框架是wpf和qt无法匹敌的。

好了,可能还有很多优劣势,我们今天就先展示这么多吧。

三者中选择哪个会更好?

听完我们的描述,你会更倾向于选择哪个进行桌面程序的开发呢?欢迎在下方进行留言哦。

好了,今天咱们就为大家分享这些吧,如果你也喜欢软件开发,欢迎跟我们一起学习吧,加入我们学习更多的免费干货吧

标签:mfc,桌面,qt,详解,相关,wpf,优劣势,三大,进行
From: https://www.cnblogs.com/sexintercourse/p/17189023.html

相关文章

  • 串口通信原理详解232、422、485,入门必看!
    串口通信原理详解232、422、485,入门必看!混说Linux ​关注他 53人赞同了该文章本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯......
  • 详解神经网络中反向传播和梯度下降
    摘要:反向传播指的是计算神经网络参数梯度的方法。本文分享自华为云社区《反向传播与梯度下降详解》,作者:嵌入式视觉。一,前向传播与反向传播1.1,神经网络训练过程神经网......
  • SpringCloud-全面详解(学习总结---从入门到深化)
    微服务架构进化论 单体应用阶段(夫妻摊位)在互联网发展的初期,用户数量少,一般网站的流量也很少,但硬件成本较高。因此,一般的企业会将所有的功能都集成在一起开发一个单体......
  • 多线程设计模式-全面详解(学习总结---从入门到深化)
    目录​​SingleThreadExecution设计模式​​​​机场过安检​​​​ 非线程安全​​​​ 问题分析​​​​首字母相同却未通过检查​​​​为何出现首字母不相同的情况......
  • HTMLReport使用2 | HTMLReport使用方法详解
    (2|HTMLReport的使用)注:以下实例来源于官网。1日志为测试报告中添加过程日志;多线程下,在报告中会分别记录每个线程的日志,同时会产生与测试报告同名的测试log文件。......
  • 【android 】android AlarmManager 详解
    在开发互联网应用时候,我们常常要使用心跳来保证客户端与服务器的连接。怎么完成心跳很关键,在说道客户端心跳功能时,如果使用Timer或者专门开起一个线程来做心跳的工作,会浪费......
  • 若依项目部署详解
    1.若依【前后端分离版】1.1.什么是若依若依就是别人写的开源项目,我们来做二次开放完成自己所需的业务,非常火的一个开源项目,能排在前面的开源项目!!!在于它的功能非常完整,选......
  • 与人沟通的三大策略
    我们常常会与一些人产生人际冲突,这种冲突不仅会让人焦虑不安,还会浪费大量时间,甚至会影响到工作。如何才能妥善处理复杂的人际关系?1、请记住,每个人看待事物的角度不一样每个......
  • SQL标签库详解例子
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@tagliburi="http://java.sun.com/jsp/jstl/sql"prefix="sql"%><%@tagli......
  • Hive date_format() 详解及其注意事项#yyds干货盘点#
    介绍date_format()是Hive中用于将日期时间值格式化为字符串的函数。该函数可以将日期时间值转换为目标格式的字符串。SELECTdate_format(date,format)FROMtable;......