使用Qt吧,前提是在这两者下进行选择。既然提到了Qt和MFC,我想题主肯定是一个C++的开发者。其实,在我看来,Windows下开发界面程序,还有很多其他的选择。下面我就连同Qt、MFC一起来介绍一下几种常用的界面开发框架。
其实选什么学习还得根据自身的需求。语言不分好坏在于人。精通才是正道。当下window下流行的编程语言,有vb,mfc,c sharp,。如果没啥限制,建议第三个吧,简单粗暴上手快,开发效率也高。如果公司或硬件限制必须用mfc或其他语言,那学就是。都是微软的产品,我开发项目都用过,知识通用。至于qt封装是全,相对微软自家的产品,用的人少些。问题多靠自己解决
具体选择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。
两者之间二选一的话肯定选Qt了,如果再考虑开发效率与运行效率的话,可以在Python平台上使用Qt的Python绑定库PyQt,再配合C++,主体用Python语言,界面部分用PyQt搭建,核心算法部分用C++封装成动态库DLL文件,在Python里去调用。这样是一个不错的方案,Python部分缩短了开发时间,C++部分保证了运行速度,只是前提是,你要会用C++写DLL,在Python里会调用DLL。
作为做了近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还在不断更新,我目前使用的是Qt59。在平时招聘的时候,也很少看到有公司让你专职做MFC,要么Qt,要么C#。
4、Qt跨平台。我当初换Qt的一个原因还是,我以后如果不做windows了可以换linux上位机,Qt可以做到很好的跨平台,而MFC不行。
两者没有好坏之分,需要看应用场景。如果是界面要求不高,稳定性和效率要求高的工业软件,MFC是最好的选择。如果是界面要求美观,跨平台使用,QT是最好的选择。但是要注意的是QT企业用是需要授权费的。另外,windows上的界面还有其他选择wpf,direct ui等。这里着重提一下direct ui,目前可以找到比较好的就是duilib这个界面库,开源稳定易用高效。关注我一起探讨呀!
我们来简单比较一下QT和MFC。
1开发速度整体来说可能MFC会快捷一些,因为windows平台的开发工具大多很智能,因为立足于windows的开发人群很广,从菜鸟到专业人士,但是QT由于基于Linux,可用的开发工具不多,大都比较专业,多是第三方产品,而且集成度不大,第三方库也没有MFC得多,从这一点MFC略胜一筹,但是QT自从被Nokia收购后,官方发布了跨平台集成开发环境QTCreator,所以之后走向就不好说了,个人总体感觉QT Creator和VSnet差距比较大,还需改进。
但是从库本身来说QT集成的功能较MFC庞大,而且使用的封装技术信号和槽也是比较受到赞许的,比如QT Script为QT提供嵌入式脚本,QT界面库支持CSS,所以QT做出来的界面比MFC要好,而且比较容易,MFC就需要借助第三方库了。
因为MFC是浅层封装(最新的2008 sp1加入了BCG的高级界面库,可能有所改善)windows SDK,以降低使用windows SDK引起的开发效率的降低,和开发难度的增加。
所以QT库是比MFC优秀的,两个库都经受了时间的考验,稳定性都很高,Bug几乎没有。
2运行效率
MFC由于其浅层封装的特点,所以运行效率是比较高的,加上vc对windows的针对性优化,整体性能是比较高的,但是如果加入第三方库就不敢保证了。
QT因为库比较庞大,封装层次较深,所以运行效率较MFC为低,但是在现在的机器配置下,C#大家都不介意了,这些会引起人们的介意吗?
3学习难度
QT的封装哲学比较明晰,和系统隔离得比较好,门槛不高;
MFC较难精通,因为深入开发之后SDK还是要了解的。
必须Qt啊,跨平台,还有鬼知道项目以后要不要跑Linux和嵌入式设备上!界面简单的话,用qml开发,可以直接移植到嵌入式设备上去,还可以把编写逻辑的程序员和界面设计师分离出来!mfc现在微软都放弃更新维护了,mfc开发界面很麻烦的,除非老项目要维护,不然不建议再用mfc做新项目了!Qt的信号与槽很赞,比mfc的回调函数好用多了!
mfc底层太复杂了,但资料多,开源代码多。
qt底层可能好点,但资料和整个开发环境肯定不如vs系列。
微软精力不在mfc上面了,而qt则要在竞争中求存活。
用什么看开发习惯,熟悉哪个用哪个。有困难找我
1、首先,开发多个Qt应用程序,每个应用程序都有独立的UI界面和业务逻辑。
2、在系统启动时,启动器程序会运行,启动器程序是一个Qt应用程序,它的主要功能是控制其他应用程序的启动和关闭。
3、启动器程序需要在主窗口中显示多个按钮或菜单项,每个按钮或菜单项代表一个应用程序。
4、当用户点击一个按钮或菜单项时,启动器程序会启动对应的应用程序,并将应用程序的窗口显示在主窗口中,用户可以在主窗口中切换不同的应用程序。
5、当用户关闭一个应用程序时,启动器程序会将该应用程序的窗口关闭,并释放对应的资源。
打包平台:安装有QT开发环境的linux系统
发布平台:未安装有QT开发环境的linux系统
以下使用到的路径需要根据自己环境不同进行修改:
qt安装路径:/opt/Qt5125
freetype安装路径:/opt/Qt5125/Tools/QtCreator/lib/Qt/lib/ //包含三个文件libfreetypeso、libfreetypeso6、libfreetypeso6170
dbus安装路径:/opt/Qt5125/Tools/QtCreator/lib/Qt/lib/ //包含三个文件libdbus-1so、libdbus-1so3、libdbus-1so3260
项目路径:/home/cs/Code/test/
项目名称:test
使用到的脚本文件:
copylibsh
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/" | grep -o "//[^[:space:]]"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
copylib2sh
sudo cp /opt/Qt5125/Tools/QtCreator/lib/Qt/lib/libfreetypeso /
sudo cp /opt/Qt5125/Tools/QtCreator/lib/Qt/lib/libfreetypeso6 /
sudo cp /opt/Qt5125/Tools/QtCreator/lib/Qt/lib/libfreetypeso6170 /
sudo cp /opt/Qt5125/Tools/QtCreator/lib/Qt/lib/libdbus-1so /
sudo cp /opt/Qt5125/Tools/QtCreator/lib/Qt/lib/libdbus-1so3 /
sudo cp /opt/Qt5125/Tools/QtCreator/lib/Qt/lib/libdbus-1so3260 /
testsh
appname=`basename $0 | sed s,\sh$,,`
dirname=`dirname $0`
tmp="${dirname#}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
注意事项:该流程里的脚本都是777权限,如遇权限问题请使用 chmod 777 copylibsh 命令
首先将程序release编译,在项目路径里找到编译生成的文件夹build-Test-Desktop_Qt_5_12_5_GCC_64bit-Release,在这个文件夹内(注意,很重要)建立 copylibsh 脚本,并执行 /copylibsh test 。执行完成之后应该有一个lib文件夹,将lib文件夹内的所有内容和test程序复制到一个新的文件夹下test-release。
在QT安装目录下找到 /512/gcc_64/plugins/platforms 文件夹,建立 copylibsh 脚本,并执行 /copylibsh libqxcbso 。执行完成之后将这个 文件夹 复制到test-release文件夹中。然后在test-release/platforms文件夹中,将test-release/platforms/lib文件夹里的所有内容 剪切 到test-release文件夹里,并删除lib文件夹。
在test-release目录下建立 copylib2sh 脚本,并执行 /copylib2sh 。
至此,所有所需的库文件应该都打包完毕。
在test-release目录下建立 testsh 脚本,利用该脚本启动程序,启动命令为 /testsh 。
遗留问题点:
1debug版本未测试,不知道是否可行。
2platforms文件夹不仅在/512/gcc_64/plugins/platforms存在,还在/Tools/QtCreator/lib/Qt/plugins/platforms存在。在成功之前一直用的Tools目录下的,但是也有别的细节不一样,待考证。
3脚本执行,或者说库的复制顺序似乎有关系。第一次copylibsh 和 第二次copylibsh 时会用一部分重叠。待考证哪个优先。
1、在designer中选择菜单栏“编辑--
2、在ui中选中label,按住鼠标左键,拖动,会d出配置对话框;
3、编辑信号和槽,一般只编辑自己需要的槽就可,点击“编辑”按钮,添加槽后确认,添加完毕。
4、如果要添加信号也可以,但是要在程序中通过代码来处罚信号,从而达到相应槽的目的,一般不需要添加信号,用qt提供的信号一般需求足够满足了。
您好,安装方法:
1、首先,Qt 59 的安装包与之前相比,不再区分 VS 版本和 MinGW 版本,而是全都整合到了一个安装包中。因此,与之前的安装包相比,体积也是大了不少,以前是 1G 多,现在是 2G 多。
2、双击启动安装包之后,将会打开一个欢迎界面。在这里,直接点击“下一步”即可。
3、接着,会提示你登陆 Qt 账户。这个 Qt 账户对普通人来说没什么必要,所以直接点击下面的“Skip”跳过即可。
4、随后,便会d出真正的开始安装界面,点击“下一步”。
5、在安装文件夹的界面,建议大家不要将 Qt 安装在系统盘 C 盘(比如我在此作了更改,将其安装到 D 盘。当然,你安装在 C 盘也是可以的),其他保持默认即可。继续点击“下一步”。
6、下面,就到了重点了。在选择组件界面,请务必要选对安装 Qt 所需要的组件,否则你安装以后是无法正常运行的。
7、首先,点击各项前面的 > 箭头展开子项的内容。
8、在 Qt59 一项中,如果你是使用 MinGW 进行编译,请务必选中 MinGW 模块。而如果你希望调用 VS 的编译器进行编译,则需要勾选对应的 VS 模块。当然,如果希望进行安卓开发,则安卓模块是少不了了。
9、至于其余的一些模块,则可以根据自身需要勾选。这里着重介绍下 Qt WebEngine 和三个后面带TP的模块项。Qt WebEngine是谷歌开源的 Web 浏览器引擎模块,而带 TP 的模块则表示此模块目前是技术预览版。
10、我的建议是,如果你是初学,这些则可以不选。千万不要以为柿子西瓜一箩筐什么都选上是最好的,这样一来是增大存储空间,二来多多少少会影响 Qt 运行时的速度,增加不必要的内存消耗。
下面,接着看工具项(Tools)的选择。
第一项是CDB的调试器,如果你仅使用 MinGW进行编译,则此项可以不选。
第二项虽然名字带 MinGW,但只是用于交叉编译的(交叉编译即在某一平台上编译用于其他平台的程序),如果用不到,也可以不选。
至于第三项,那是用于 Perl 的。如果你电脑中本身没有安装 Perl,那是装不上的。
选择完成后,继续点击“下一步”。
接着,在打开的页面中勾选“我已经阅读并同意条款”(原文是英文)。然后,继续一路点击“下一步”,直到安装完成就可以了。
以上就是关于做windows界面,用QT还是MFC全部的内容,包括:做windows界面,用QT还是MFC、嵌入式qt跑多个应用、Linux 打包 QT 程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)