MFC和QT的区别

2020-11-13 10:31:12 浏览数 (1)

MFC 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C 类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。早期很多学习计算机专业的读者可以在学校里面都有接触过,因为这个是每一个计算机专业的读者必修课程,所以在早期的C 项目里面很多都是使用MFC为开发框架进行构建的,因为它有一个很大的好处就是和我们的windows的系统兼容性很好,可以直接调用整个系统的API函数,而且开发的程序对系统的支持度很好,因为我们现在的windows系统都是在向前兼容的,如windows系统里面有win 95、win98、win2000,win Xp,win7,这些操作系统都是一致向前兼容的,如果经历过这些系统的读者都会发现系统在win8之前一直往前兼容,造成操作系统变得越来越大,在win8系统,后windows系统引入C#一起来对windows系统进行调控,这时我们会发现win8对win7的兼容性很差,而且这个操作系统也是微软除visit系统最短命的系统,这个时候我们就会发现我们的MFC开发的程序在整个windows兼容性不是那么高了,而且由于当时,对于我们的C 开发一直有一个叫做visual studio 的编译器在C#语言没有出来前,只能编译C ,所以visual studio作为全世界最优的编译器也是整体支持MFC,所以这个时候我们现实生活中在windows系统开发的程序很大部分都是使用了MFC框架进行开发,在如今我们的很多酒店、政府等等很多行业上面用的都是MFC框架进行开发,MFC全面支持COM组件开发,这个时候很多在windows开发的程序也会在这上面支持COM组件开发,还有由于在中国大部分计算机的使用者都是用的windows系统,所以在开发程序中用C 来开发的时候都是使用了最为稳定的MFC进行开发,记得几年前和一位一起工作的朋友曾经谈过,只要微软不倒闭,MFC的工作者就不会失业,为啥呢,哪怕现在在windows上面最为流行的C#语言也没有C 中的windows编程对windows操作系统操作这么流利,打个比方如果你的电脑里面在加上一个高拍仪这个时候要用到的是USB驱动进行调用,这个时候处理USB驱动调用的时候就会发现,驱动调用的数据都需要进行位运算,这个时候用C 来处理是最为方便的,所以C 在windows上面的开发之所以占尽了便宜,是因为windows编程,而我们的MFC是封装后的windows编程。

QT

是一个1991年由Qt Company开发的跨平台C 图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。QT在很多时候我们都不是很了解,是因为在QT在2008年由诺基亚收购后出现了我们的诺基亚第一个智能手机系统塞班图,但是由于当时的安卓系统的流行,所以最后我们的手机神话诺基亚也因此迅速下滑,最后QT被诺基亚公司转让给Digia,2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C 代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。优良的跨平台特性: Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。丰富的 API:Qt 包括多达 250 个以上的 C 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。支持 2D/3D 图形渲染,支持 OpenGL;

在windows系统

由于QT开发的界面全面支持脚本开发并且QT可以嵌入到visual studio进行开发,所以做出来的界面非常的精美,所以现在C 在windows平台开发会使用QT作为应用程序开发,进而调用windows编程来进行驱动的开发,这样俩者完美的兼容在一起,这样可以避免QT开发程序的不稳定性和MFC开发界面不够美观的问题,所以在windows上面一般使用C 开发桌面应用程序使用的是windows编程 QT框架编程;

在liunx系统

liunx系统上面进行开发是我们所有学习C 读者必须知道的知识,为啥liunx下面有俩个大东西,服务器和嵌入式,做服务器可以在linux下面做多线程开发,这个线程池的开发,所以现在大部分的服务器都是运行在liunx系统上面,嵌入式开发由于liunx的开发板现在是最为便宜的也和学校里面的学习上面有关,所以很多嵌入式设备里面嵌入的都是liunx系统,在这上面我们的QT可以在liunx下面从事嵌入式界面开发,因为liunx程序也会有桌面程序,这个时候可以通过QT arm开发所以可以在linux下面进行界面开发

作者:莫影 链接:https://www.zhihu.com/question/286904809/answer/452036336 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 人点赞