❶ QT和MFC的优劣
QT和MFC的优劣:
(1)开发速度
就整体而言,MFC可能会快捷一些,因为Windows平台的开发工具大多很智能,因为立足于Windows的开发人群很广,从菜鸟到专业人士(开发人员一多,技术参考就多,周围可以咨询问题的人就多)。
相比较而言,Qt基于linux,可用的开发工具不多,而且这些工具大都比较专业,多是第三方的产品,加上这些工具的集成度不高,支持的第三方库也没有支持MFC的第三方库多,因而从这一点看,MFC略胜一筹。
不过,Qt自从被诺基亚公司收购后,官方发布了跨平台集成开发环境Qt Creator,之后的走向就不好说了,作者个人的总体感觉是Qt Creator和VS差距比较大,还需要改进。
(2)运行效率
MFC采用浅层封装,运行效率比较高,加上VC对Windows进行了针对性的优化,因而整体性能是比较高的,但是如果加入第三方库就不敢保证整体的高性能了。
Qt库比较庞大,封装层次较深,所以运行效率比MFC低,但是在如今主流计算机系统的配置下,人们还会介意这点性能差别吗?
(3)应用范围
如今Windows的普及率无人能及,MFC的使用人数自然就多,相比而言,Qt主要是Linux下的开发人员在使用。MFC不支持嵌入式开发(主要是指手机平台)。
而Qt有对应的支持模块,虽然这一手机开发领域被java碾压,但总归还是有Qt的使用空间。
(4)学习难度
Qt的封装方式比较明晰,和系统隔离得比较好,作者个人觉得学习的门槛不高。而MFC则较难精通,因为深入开发之后还需要了解SDK,否则开发出的程序比较初级。
❷ qt编程问题
1、关联Qt库。如果是分别安装的Qt Creator和Qt库,而不是安装集成Qt Creator和Qt库的SDK,则需要手动关联Qt库。打开工具→选项菜单,然后选择“构建和运行”一项,再进入Qt版本选项卡。点击右上角的“添加”按钮,然后会让选择qmake.exe文件,我们在Qt(不是Qt Creator)安装目录的bin目录中找到该文件并打开。现在已经默认生成了版本信息,我们点击确定按钮即可。
2、关联MinGW。在安装Qt 4.8.6及以后的Qt 4版本时,应该按照安装时的提示来下载相应版本的MinGW,不然编译程序无法运行。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下载并指定GDB才能正常调试。下载完MinGW和GDB以后,将其解压到Qt的安装目录中,比如这里都解压到了C:Qt目录中。打开工具→选项菜单,然后选择“构建和运行”一项,再进入工具链选项卡。点击右上角的“添加”按钮,然后会让选择mingw32-g++.exe文件,我们在MinGW安装目录的bin目录中找到该文件并打开。关联GDB则进入调试器选项卡添加GDB相关exe文件。
如果安装的是集成开发包QtSDK,则不需要手动关联Qt库、MinGW和GDB,由Qt自动关联。
注意:Qt5以后版本默认也包含了所有需要的工具,不存在这里的情况,直接下载安装即可使用!
3、在创建桌面版项目时,最好选中“使用影子构建”,这样编译生成的文件会和源码分别存放,如下图所示。编译完成后会发现多了一个helloworld-build-desktop-Qt_4_8_1__4_8_1____目录,里面存放的就是编译生成的文件。这就是前面创建项目讲到的 “使用影子构建” ,如果没有选中这个,那么生成的文件就会和源码在同一个目录里。
13、状态信息可以被分为三类:临时信息,如一般的statusTip提示信息,上面讲到的动作提示就是临时信息;正常信息,如显示页数和行号;永久信息,如显示版本号或者日期。可以使用showMessage()函数来显示一个临时消息,它会出现在状态栏的最左边。一般用statusBar->addWidget()函数添加一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。如果要显示永久信息,要使用statusBar->addPermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在状态栏的最右端,不会被临时消息所掩盖。
14、关于随机数,在Qt中是使用qrand()和qsrand()两个函数实现的。在使用qrand()函数产生随机数之前,一般要使用qsrand()函数为其设置初值,如果不设置初值,那么每次运行程序,qrand()都会产生相同的一组随机数。为了每次运行程序时,都可以产生不同的随机数,我们要使用qsrand()设置一个不同的初值。
❸ 桌面端开发都用什么语言,简单分析下这些语言的优劣势对比
目前,最优的选择有四个:
1.如果只在win下使用,.net form是不二选择,可谓是又快又好,企业应用或定制开发都是相当好的,初学者也可以入手。
2.electron,跨平台。需要会前端,必须熟悉js、css和html。属于前端人员大杀器,如果是初学者,需要一下子学三样东西,再加上electron的进程间通信,可能会被搞懵。
3. qt5,可以使用qml(js语法)进行UI编程,但是需要懂c艹,但是写软件相当快,还可以写安卓、ios、Linux、嵌入式中的应用。
4.flutter,刚刚正式支持win平台的软件开发。谷歌出的这个东西,适合没有基础的初学者,因为是一个全新的体系,全新的语言,写ios、安卓非常高效,之后还会兼容h5。如果是初学者可以跟着走,值得尝试。但是新东西总有一些坑。
正式项目跨平台建议electron或qt,只用win平台强烈建议微软自己的net。个人技术尝试建议flutter。
桌面端开发跨平台的,如果你是轻量级的项目,那么我推荐你用electron, 目前使用Electron来开发的桌面应用非常多,我们最熟悉的比如Atom,VScode等等。
而且在github上也能找到许多应用使用了electron。
electron是Node,Chromium,html,css,js的结合框架,这就需要你有一定的前端基础。其实只需要了解一下electron的API就行了,其他的就像你在做web是一样的。
这种方式最大的缺点就是性能,还有透明窗口也有问题。所以在做需要性能方面占有很大成分的项目时,并不推荐使用这个方式。
那么其他的,就是最近几年使用比较多的windows directui框架,但它不是跨平台的。
那么就引出了qt,作为c++跨平台的界面框架,这个上手的话,我觉得对一般人是有难度的,因为首先需要扎实的c++功底,其次你要熟悉控件的制作原理,因为有时候你需要定制自己的UI控件。它现在在嵌入式,军工领域非常受欢迎。但是整个库非常臃肿庞大,而且开发界面的效率也非常低。如果来做互联网项目,迭代更新的速度根本就跟不上。
目前都只有大公司会采用,像maya这种生产力型的应用很多是qt做的。
还有一种是直接使用Cef加js,比如网易云音乐,就是这么搞的,但是很多和系统平台的交互接口你需要重写,等于是需要自己造轮子。工作量大,目前没有适合的框架给你套用,也需要扎实的c++功底。
其实pc端的应用基本也就windows会火一些,再加一个macos,那么选择qt应该会很好一点,毕竟你自己造一个跨平台的框架,太费时。总之,做跨平台就意味着,不可能做到既有效率又完美的实现各种功能,许多都要自己摸索。
win桌面端直接上visual studio啊!然后你熟悉什么语言?vb.net,c#,c++都有相应的win桌面工具。直接用就好了,非常好用
编程语言这种东西无所谓,只要能用啥都可以。 主要看你老板需要和你会用什么语言。
比如 我用AS编安卓程序,当然用JAVA。不过我后台最开始用ASP和ASP.NET来做,现在换PHP了。桌面端用QT或者VB做。 涉及单片机部分控制也用C。
现在做跨平台的了 开始以QT为主了。
只要能达到目的啥都可以。
学会1-2种 换其他的也不是很难。
对初学者来建议学C起步吧。
精通一门,重新学个语言入门也就1个月的事。
PC桌面程序,如果简单一点的,用pyqt5+python的开发难度和周期都比较现实一点
会C++ 用Qt5 非常不错 写代码效率很高
会js 用atom使用的那个框架
会Python用PyQt 写代码很快
会java用JavaFX
看语言咯
还可以用delphi,其firemonkey框架发布8年时间,支持跨平台:win,安卓,ios,macos,linux,后续支持webassembly,界面是控件拖拽布局所见即所得,开发效率较高。编译生成的是机器码,编译速度快,调试方便,其生成机器码运行效率较高,支持x86,arm的32位64位处理器。支持跨平台3D界面,蓝牙通讯,定位,重力,摄像等,支持多种SQL,NoSQL数据库。单个开发工具实现前后端开发,跨平台开发。适合个人和小公司用一套工具实现大部分开发需求。
主要有以下几种技术
### Duilib
#### 简述
Duilib是在Windows平台上使用最广泛的类库,使用C++和XML混合编程,国内很多计算机企业都喜欢使用这个类库,可能是由于他的技术许可比较宽泛的原因。
适合于界面比较简单的软件,视觉特效丰富,局限于Windows的平台。例子:360电脑管家。
#### 优势
#### 劣势
### Gtk、Qt或WxWidget:
#### 简述
三种基本可以做到跨平台的技术,使用C/C++开发,使用者广泛。其中WxWidget使用了API嫁接方式,Qt和Gtk(包括各种绑定技术)使用自绘技术。
结构严谨,软件可以做的很大很复杂。例子:WPS和Maya。
#### 优势
#### 劣势
### Electron:
#### 简介
使用Web技术开发桌面软件,基于Chromium(Chrome)引擎,使用JS编程语言,绝大多数使用者都是原来的网页开发者。
绝大多数都是爱好者使用,处于“勉强可用”的地步。
适合大面积静态展示型软件使用。例子:网易云音乐。
#### 优势
#### 劣势
### QtQuick(QML)
#### 简述
Qt公司开发的一款基于OpenGL的图形类库,有显卡加速,类似于Duilib。采用了C++与QML混合编程。QML类似于JavaScript语言。
QtQuick下一个版本在Qt 6上更加强大,业界期待已久。
#### 优势
#### 劣势
### Atk、Swing或JavaFX
使用Java语言开发软件,有JDK加持业界积累的众多Java类库支持。有不输于VS的IDEA加持,本应该更棒,只是现在已经式微了。
绝大多数使用者都是企业开发(不追求界面美观)、爱好者(开发顺手)。
### WinForm、WPF或Xamarin:
使用C#开发,WinForm和WPF局限于Windows平台。有VisualStudio加持使用很爽。
### Flutter:
使用Dart语言,新类库,bug可能会很多。
### SwiftUI或Cocoa:
苹果平台原生界面技术,macOS平台内建支持,不是macOS专用软件不推荐。
### Win32:
经典Windows 平台API,绝大多数只有一些老软件还在使用,不是维护老软件不推荐。
winform,不二选择
webview2,作为一个浏览器控件嵌入在桌面应用中,支持.net core和.net framework
❹ 请哪位来解释一下Qt静态编译和动态编译的区别
静态编译与动态编译的区别:
1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。
所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。
缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。