| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 对于Qt跨平台客户端开发的一些看法 -> 正文阅读 |
|
[系统运维]对于Qt跨平台客户端开发的一些看法 |
一、Qt跨平台开发的一点疑虑??Qt能跨平台开发,这是大家都知道的,但是,真的做起来不是那么容易,很多公司的客户端也没也完全用跨平台框架来开发,而是在windows, macOS,linux上各搞一套,比如windows用DuiLlib、Qt、或者自己写的UI框架;macOS则用swift / oc,如果用Qt进行windows和macOS跨平台开发,是要慎重考虑的,最好windows一套代码,macOS尽量用swift/oc来做,很多东西在windows上解决方案很多,用C/C++基本都可以搞定,但是在macOS就不一定了,虽然C/C++/OC/swift可以相互调用,但是这增加了代码复杂度,也对开发人员的技术有很大的考验。 二、开发建议??下面分享一下Qt客户端开发的一些个人建议 2.1 IDE选择??用Qt做界面库,IDE可以用QtCreator和VS,如果不考虑跨平台,那么在windows上就用VS, 调试、项目管理也很方便,QtCreator能做的,vs也能做,而且VS和QtCreator项目可以相互转换;linux那就用QtCreator吧。另外现在比较新的vscode和clion也是可以尝试,不过主流依然是QtCreator和VS,vscode免费,但是项目配置麻烦,调试也不太方便;CLion是收费的,很少有公司用,用盗版很容易被律师函警告的,JetBrains在IDE领域基本已经通吃了,每年花费2000元就可以享有所有编程语言的ide使用权。 2.2 通用库的选择??项目开发,必然要使用到各种库,比如日志库、网络库、线程库等。 (1) log??如果用C++开发,log那么可以考虑glog、log4cplus、log4cpp,如果觉得个人功力深厚,也可以自己封装一个log;Qt也有第三饭log库,比如QsLog。 (2) 网络库??用Qt的话,Qt本身支持网络开发,http、tcp、udp、ftp等都可以,如果不想用Qt网络库,那么可以用系统库,windows, linux都有自己的socket, 不过有一点不好的是,系统库可能不跨平台。如果需要和后台java/php等进行接口的调用,可以考虑QtNetwork框架,或者用libcurl,二者都可以进行get、post. (3)线程库??Qt对thread有支持,可以使用QThread进行开发,当然C++ 11之后,从语言层面解决了多线程得跨平台问题,可以用std::thread代替其它得线程库。 (4)图表曲线模块??一些嵌入式,监控行业,可能会用到图标,QCharts支持各类图表,之前的QCustomPlot,QWT等也是很好的图标曲线组件,但是我要提一嘴ECharts, 这是百度开源的图表组件,这是我目前见过的最好的图表库,利用Qt web交互技术是可以使用ECharts的,然后动态绑定数据即可。 (5)编码规范??每个公司都有自己编程规范,入职时得先了解,不然写起代码来,随便搞,那就很不协调了,有强迫症的看到,估计很不爽,必须改过来,你一改动,就会触发git冲突,对别人也是一种侵犯,这就是业内的一种现象"不要瞎该我的代码",业内比较正规的有google C++规范,华为C++编码规范等,或者更具项目需求,自定义一套规范,对于入职的新人让他们先学一学。 (6)开发流程 git follow??git follow没得说,就当作标准来执行吧。 2.3 复杂页面设计??像一些简单的页面,用QWidget或者Qt Designer是可以慢慢搞出来,就拿优酷界面来说 ??Qt和web的交互现在已经做的很好了,QWenEnginView对chrome的支持很友好,可以达到cef的效果。 2.4 自适应分辨率??在我的Qt进阶文章中有谈到关于分辨自适应问题,现在笔记本电脑都是2.2k, 2.5k, 3k乃至4k分辨率,你在公司1920*1080的显示器上开发的界面效果在别人电脑可能就不一样了,此时就需要自动的改变Qt控件的大小,图标也尽量使用svg图,而不是png,Qt本身对窗口自适应的属性也有支持,大家可以去测试看看。 2.5 跨域语言、中文乱码问题??关于这个,得用翻译文件来做,问题不大。 2.6 exe打包技术??安装包制作,方案很多,可以使用NSIS或者Qt原生的IFW技术。 2.6 模块划分??小项目随便写写,一个人撸完也不是不可以,大项目呢,尽量把功能分开,能封装成dll就做程dll, 提供接口,外部调用,这样在协同开发时也方便,对于软件更新也有帮助。 2.7 软件更新??当用户安装软件后,后续更新怎么做呢,就是怎样把服务端新的安装程序下载到用户电脑上,现在客户端技术已经是达到顶峰了,这块儿一般也是需要前端来做的,比如增量更新,在启动客户端时,检查本地版本和服务端的版本,相同的文件进行下载,不同的不下载,这一块儿我也没有深入研究,相信有更好的技术来显示。 2.8 数据埋点??埋点这种行为,有点窃取用户隐私的做法,但实质也没什么伤害,只是让运营商更了解用户对软件的使用情况。这个一般是产品经理超滤的事情,他们说怎么做,开发就去实现。现在埋点都有服务商提供,花钱买就可以了。 三、Qt就业环境??关于就业趋势我在之前的文章也讲了一些,虽然岗位不多,但是依然可以要口饭吃,一些大厂也有相应的岗位,例如很火的抖音,字节跳动提供了视频剪辑工具“剪映”,它就是用Qt/QML开发的,以及WPS客户端、斗鱼客户端、优酷客户端、UOS等都是用Qt开发的,Qt/MFC等windows界面开发依然是有不少岗位,但没有java python 大数据 人工智能那么多,毕竟是流量为王的时代,移动端,大数据,深度学习,数据挖掘等是大趋势,客户端开发在这大环境下能分一杯羹也是不容易的。另外比较重要的一点是C++前端和web前端有很大的区别,web前端更多的是业务展示,不涉及领域的知识,但是C++前端的工作,大部分情况下是要兼顾相关领域知识,比如做音视频,视频的显示,音视频同步等,做图片算法的,图片的展示,内存的处理等,做其它行业也是一样的,不能只关注界面的效果,相关领域的知识也要深究。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 16:33:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |