您当前所在位置:首页>>CF活动大全

cf活动助手率编程大作业涉及QT和MFC,不知选择哪个?

来源:珍惜站长|发布时间:2022-11-01 13:31:41|浏览次数:3

cf一键领取的网址

一、前言

为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右。当时为什么会从MFC转到QT,主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MFC的界面库代码也是比较混乱,当时主要看到qt有qss样式设计这个功能,决定试下。当项目移植到到QT后,觉得MFC真的是可以抛弃了,MFC相对于QT缺点实在太多。当然MFC还有一个致命的缺陷,没法跨平台。 当然有同学可能说为什么不直接使用C WPF做界面,我们一些项目和工具确实是用C做的,C和C++也确实可以互相调用,并且可以断点调试。但在性能上还是有不少的损失。对于我们做的音视频和三维仿真项目确实有影响,所以只在一些对性能没有极致要求的项目中使用C。

二、QT历史

说了一些我们项目的情况,再来简单介绍一下QT历史,知道历史的目的是要判断使用此库是否有风险,是否会停止更新,很多开源库没有做好商业化最终都是停掉了。

l QT由奇趣科技公司开发

l 2008 诺基亚从奇趣科技公司收购Qt, 并增加LGPL的授权模式

l 2011 芬兰的Digia从Nokia收购了Qt的商业版权,从此Nokia负责Qt on Mobile, Qt Commercial由Digia负责

QT的开发的最高峰是在诺基亚智能手机如日中天的时候,那时候诺基亚塞班系统的手机应用大量都是基于QT,随着苹果和安卓的流行,塞班退出历史舞台。qt的手机端开发需求也基本被替代。但QT在嵌入式、电力系统、军工系统中应用一直没有被替代。

三、QT现在使用情况

了解一下他现在的情况,主要考虑应用场景是否多,就业是否广,人才是否好招聘。QT被广泛应用于嵌入式、电力系统、军工系统等要与硬件交互的界面系统中,并且大量的专业的跨平台应用软件也是使用QT开发。

digia接手QT后开发出了安卓和IOS版本的QT,实现了开发一套程序可以在全平台运行。但目前不建议使用QT开发安卓和IOS应用,坑还比较多但肯定会越来越完善。

我们列出QT开发的软件:

1、Autodesk May阿凡达和功夫熊猫的3D动画制作软件

2、在wps的目录中的可以看到QT的的dll库

3、 金山词霸

4、google earth

5、 微软的skype

6、 virtualbox(oracle的虚拟机软件)

(太多了就不一一列出了)

四、QT提供的工具

再看下QT提供了哪些工具,QT不仅提供了功能丰富的SDK开发包,还提供了强大的工具,这也是我们选择他的原因之一。

1、基于VS的插件qt-vs-addin

2、 Qt助手(手册)qt的手册还是比较完备,并且包含了很多示例的源码。

3、 基于XML的界面设计器Qt Designer便捷的解码设计,应该是c++领域最方便的界面设计器。

4、 跨平台的开发工具 QtCreator跨平台的c++开发工具,应该是在linux上最方便的c++开发调试工具,就算不用QT库,也可以用它来开发跨平台的c++项目。

五、QT框架优势

最后我们看下QT有哪些具体优势

1、 工具丰富

这个前面已经对它的工具做了介绍。

2、功能丰富

出了提供了界面库之外,还提供了音频库,3d库,数据库SDK,WebEngine,网络库等,让我们做跨平台程序变得简便。

3、开源并跨平台

出了可以自己通过QT源码进行移植之外,qt官方就已经提供了再windows,Android,ios,linux中运行的SDK。

4、架构的优势

这部分优势很多,我们列出一些示例,可以看出它的优势。界面源码与用户源码的隔离,qt的策略是没有界面都会生成一个对应的源码,比如有一个界面设计文件xps.ui 它会解析其中的xml生成一个对应了ui_xps.h 文件,这个文件你不需要修改,如果要调用界面中的控件直接通过 Ui::XPSClass ui; 这个对象定义也是写在ui_xps.h中。也就是你的业务逻辑就和界面控件对象的创建和设置做了隔离。

cf助手的图标怎么关闭

事件处理的便捷(灵活的信号槽机制),qt提供了信号槽机制,可以很好的降低耦合,提升代码的复用性。

例如有这样一个需求,我的一个XMov类专门处理视频,但要把处理进度告知外部界面XSlider的对象,我处理方法,可以XMov提供接口给外部获取进度,或者是主动调用外部接口来刷新显示进度,第一种方法实时性得不到保障,并且界面端程序也需要引入XMov类头文件,也就是做了关联。第二种方法使得XMov类的耦合性加大,当界面发生变化是XMov类需要修改。QT中了信号槽机制可以让两个类XMov和XSlider关联起来,在XMov中直接定义一个信号函数void SetPos(int),直接绑定到XSlider对象的void SetPos(int)槽函数,二者互相都不知道,降低耦合性。只在统一的入口类中将各个模块直接的信号槽关联起来。

XMov::run()

这就是信号槽的一种好处,当然信号槽也是处理各类控件的自定义事件。

3年嵌入式物联网学习资源整理分享:C语言、Linux开发、数据结构;软件开发,STM32单片机、ARM硬件开发、物联网通信开发、综合项目开发教程资料;笔试面试真题。点击下方插件免费领取↓↓↓

穿越火线一键领取电脑版

5. 及其便捷的样式设计(像开发web程序一样设计界面)

可以很容易的做一个圆角边框,并且有渐变效果,鼠标移上去还发生变化,可以参考下面的样式表,qss基本和css类似,包括支持css的选择器,可以通过类名,对象名,和父类名称来设置。

QPushButton:!hover

QT的下载地址可以到qt的官网https://www.qt.io/注册账号后下载,或者到 ffmpeg.club/qt 下载qt各个平台的SDK和工具

素材源于:见原文链接

版权归原作者所有。仅供技术的传播和学习讨论,如涉及作品版权问题,请联系我进行删除。

最后

今天的内容就到这里了,觉得有所收获,记得点个赞哦~~

最后一个bug

推荐专辑 点击蓝色字体即可跳转

MCU进阶专辑

嵌入式C语言进阶专辑

bug说专辑

专辑|Linux应用程序编程大全

专辑|学点网络知识

专辑|手撕C语言

专辑|手撕C++语言

专辑|经验分享

专辑|电能控制技术

原文作者:最后一个bug原文标题:为何QT渐渐成为界面编程的第一选择?原文链接:

cf活动助手电脑

©版权所有 2015-2023 CF活动助手一键领取 辽ICP备2021000370号-5 XML地图 TXT地图
友情链接: CF活动助手一键领取