学习C++QtMFC客户端开发还有前途吗?本⽂给你答案
C++ 客户端开发在2010年之前应该还是挺流⾏的,⾃从移动端,web兴起之后,PC客户端开发就逐渐⾛下坡路了,甚⾄很多语⾔、框架都消失了,退出了企业的招聘舞台,像VB就是鲜明的例⼦。⼤部分公司都⾛向了移动,web,⼩程序的热潮,C++ Qt/MFC客户端开发岗位逐渐减少,但并没有消失。
本⽂主要回答标题的问题,C++ Qt/MFC客户端开发还有前途吗?我的答案是:PC客户端开发仍然有前途,任然有岗位需求。
下⾯我就慢慢给⼤家讲解分析。
⼀客户端应⽤领域
1 商业软件
electron vue教程 由于电脑办公的便利以及其它特点,从⽬前的PC客户端来看,⼀些⼤⼩⼚仍然有pc端项⽬,例如:
⾦⼭:WPS项⽬,这是Qt/QML的集⼤成开发,应该是国内Qt⽤的最好的公司,⽽且还有很多社招岗位,但是想进去应该有不⼩的难度,很多985/211的不屑与做这种客户端项⽬,更不屑与做Qt开发,⼤部分都做AI、算法、java、 python之类的岗位了。普通⼀本、⼆本、专科的就有⼀定的机会进⼊该项⽬组,但是你得技术过硬,想混过去是不可能的。
⽃鱼:⽃鱼直播的PC客户端是Qt开发的,当然你得会⼀些⾳视频知识,OBS得⽤⽤,源码点时间去调试⼀把。
中望CAD: 为了跨平台,Qt是很好的选择
优酷:PC端优酷界⾯是Qt/QML开发的
爱奇艺:这个界⾯可能是DuiLib做的
字节跳动:飞书,剪映,都有Qt/QML的参与
腾讯:腾讯会议ImGUI,腾讯视频DirectUI
万兴科技:万兴喵影,完全就是⽤Qt开发的,视频剪辑的⼩霸王,可以对标会声会影等名声较⼤的软件。
⼤部分的视频监控客户端、视频剪辑、播放器等客户端⼯具,以及中⼩型公司的项⽬,仍然会选择Qt作为界⾯开发⾸选,还可以跨平台,移植到linux, deepin, UOS,mac等。
2 嵌⼊式
在嵌⼊式领域,Qt作为界⾯开发利器,是不⼆选择。
3 ⼯控领域
在招聘⽹站上,⼤家可以去看看,⼀些⼯控软件,医疗软件,CAD软件,也会选择Qt最为界⾯框架。
4 游戏
PC游戏可以说是客户端开发最为成熟和吸⾦的地⽅,当然也有很多游戏框架,cocos2dx, unity3d, unreal等,或者直接⽤Qt, MFC等原⽣框架直接写。
5 ⾦融交易平台
为了⾼稳定性,⽤C++界⾯库来写交易平台应该没什么争议。
⼆其它C++界⾯框架
C++除了Qt, 还有其它界⾯框架,例如MFC, DuiLib, Soui, ImGUI, 各种DirectUI等。
MFC
例如,福昕PDF⽤的是MFC, 当然,他们应该有借⽤BCG, 这种界⾯不太复杂,相对于视频客户端,没有花⾥胡啥的动画切换操作,⽤MFC可以解决。但是现在新项⽬⽤MFC是在太少了,难⽤,也没有多少⼈愿意使⽤MFC.
那么MFC还需要学习吗,如果公司的⽼项⽬还在⽤,你得去学学,⽹上的教程也挺多,⼀般界⾯部分应该不会改动的太多,业务逻辑可能要改。如果没有这种项⽬,那么就别学MFC了,基本很少会⽤得到。
ImGUI
腾讯会议⽤的是ImGUI, ⼤家有兴趣可以去githubImGUI体验⼀下,这个可以跨平台,有OpenGL和DX两种渲染⽅式, ImGUI对⾼分屏的⽀持也很好,不⽤程序员去处理,像Qt, MFC这种,对⾼分屏还得⾃⼰⽤⽮量图,改变控件⼤⼩的⽅式去⾃适应4K, 2K屏幕。
SOUI
Soui在⼀些⼩众软件中也有不⼩的应⽤,但是不能跨平台,很遗憾,soui的前⾝是⾦⼭带出来,具体历史我也不清楚。
DuiLib
DuiLib的应⽤应该还是挺⼴的,,钉钉等项⽬都有⽤到,可以⾃⼰魔改UI,开源免费,但是不幸的是也不能跨平台。
三、微软C# .Net
相对于C++,在windows上开发客户端应⽤,个⼈最推荐的还是C#技术栈,winform和WPF, 最好的还是WPF, 只要微软不倒,C#还有⽤武之地,毕竟C# .Net可以前后端通吃。
⽤winform和WPF开发桌⾯应⽤,可以只⽤C#,还可以⽤C/C++来参与,核⼼功能可以让C/C++来做,封装成SDK供C#调⽤,避免了反编译源码泄漏的风险。
⽤WPF可以不⽤担⼼⾼分屏带来的界⾯控件适配问题,相⽐于MFC, DuiLib,Soui等⽅便很多,⽽且C#是写起来最舒服的语⾔。
如果不考虑跨平台,相信很多公司还是很愿意采⽤C#来写客户端,开发便利快捷。
四前端PC界⾯框架
PC端软件除了⽤C++/C#,还可以⽤web前端的技术来实现,例如Vue, electron这种,套壳打包成exe应⽤,开发效率也是不错的。但是如何涉及到⼀些和C++交互的问题,那就⿇烦了,当然⽤node.j
s还是可以解决的,只是开发⼈员需要多学习⼀些技术,企业的招聘要求略⾼。如果只是⼀些企业级的增删改查应⽤,⽤Vue或electron进⾏还是很不错的。
五、客户端开发需要学习哪些技术
如果想从事客户端开发岗位,光学习界⾯库Qt, MFC等,显然是不⾏的,这是C++前端和web前端的区别。web前端开发⼈员只需要掌握html、css,、js、vue、react等框架,堆好界⾯,和后端接⼝交互,增删改查等,那么基本就可以搞完⼀个项⽬。那么C++前端(客户端)开发者该学习哪些技术呢?
客户端,主要是显⽰,界⾯交互,例如数值。图形,视频,图表,曲线的显⽰等。
数据从哪⾥来?硬件设备,⽹络,数据库,其它程序;如果是从硬件设备,那么需要学习对应的通讯协议;如果是⽹络,那么基本的⽹络编程是必不可少的tcp, udp, rtmp, https等;如果数据库,那么和数据的交互你得会吧,数据库连接,curd等;如果是其它程序,多线程,多进程这种得知道的;还有就是后台http接⼝,libcurl之类的技术得清楚。
图形的显⽰,如果是三维图形,点云数据等,那么需要的专业知识还是挺多的,OpenGL, OPenCV, PCL等,在下也没做过类似的项⽬。
如果显⽰视频,声⾳,基本的⾳视频常识得知道的吧。
可见作为⼀个合格的C++客户端开发,不是简单的会C++/Qt/MFC就可以,会涉及到很多领域,在求职就业时,选择⾃⼰感兴趣的,⼀直深挖,同时,其它技术也得学学,防⽌内卷。
以上是界⾯显⽰的内容,关于客户端开发,还有很多,就说Qt的跨平台,在windows, mac, linux想做到⼀码多⽤,界⾯的适配也是不⼩的⼯作量,涉及到重型应⽤,还得有GPU相关的开发,例如cuda, dx等。
六、关于Qt等框架跨平台的⼀点看法
Qt可以跨平台,这是⼤家都知道,但是真正做时你才会发现,各个项⽬的需求不同,Qt解决不了⼀切,在windows和mac端有很⼤的区别,有时⼀个项⽬可能要开两套代码,在windows平台,各种GUI技术⾛起来问题不⼤,但是Mac平台,⽤swift、electron可能更⽅便,有时很多功能只有oc、swift接⼝,你C++/Qt参合进来难免尴尬,C++可以和oc, swift交互,但是原⽣的交互会更⽅便,⽽且实现的特效更切合macOS。在linux平台Qt问题不⼤。
前端技术⽬前跨平台不是问题,vue + nw.js、electron、flutter等基本可以做很多应⽤,只要不是太多的需要和操作系统交互、⾳视频图形图像等;C++在界⾯开发跨平台基本没啥⽤武之地了,C++主要还是⽤来写核⼼功能,写服务器等。
七、总结
吾⽣有涯,⽽学⽆涯。
只要PC还在,客户端开发仍有岗位,只是没有web, 移动端开发,后台那么多岗位。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论