当前位置: 首页 > news >正文

C# WPF上位机开发(QT vs WPF)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        最近经常收到朋友们的私信,他们对C# WPF开发很感兴趣,但是呢,正当准备学习的时候,又有人告诉他们应该学习c++ Qt。这么一来,他们往往就拿不清楚主意了,不知道是应该继续学习WPF呢,还是重新学习QT呢,因为看上来两种语言都不错,都有很好的发展前景。既然遇到这个问题的同学不在少数,趁着今天有时间,我们可以具体地讨论一下,一项一项拆开来看。

1、从编程语言考虑

        WPF本身用c#语言开发比较多,而Qt以c++语言开发为主。而且众所周知,c++的标准比较多,学习难度也比较高一点。而且,除了c++之外呢,它还会和boost库一起使用,无形之中增加了学习的难度。所以从编程语言的难易程度来说,这方面WPF要容易得多。

2、从跨平台的角度考虑

        WPF本身支持的平台以windows为主,大部分人用WPF开发也是为了让它在windows上面运行起来。但是QT本身是支持跨平台的,它不仅仅可以在windows平台运行,而且可以在linux上面运行。如果本身运行的平台是嵌入式linux系统,那么无疑用QT是非常方便的。

3、从商业的角度考虑

        目前开发WPF的话,我们完全可以利用vs community进行开发,这方面几乎没有版权的限制。另外,微软对于年收入少于特定数额的公司,其实是不收取相关费用的。而QT虽然是以开源软件的形式进行发布,但是本身还是存在着商用风险的,并且目前为止这个价格也并不统一。很多公司目前使用QT,其实有很大一部分企业也是处于偷偷摸摸的状态,相关开发工作也是悄悄进行的。

4、从开发效率角度

        QT开发,可以使用自带的Qt Creator软件,编译器是Mingw,也可以结合Visual Studio软件进行开发。而WPF的话,基本都是使用微软的vs进行开发。从开发效率来说的,看上去用QT design studio去拖拉控件很方便,但是说老实话可能是我个人的原因,相关设置显得有点过于复杂。而使用WPF的话,学会xaml脚本之后,相关控件的布局几乎完全可以根据自己的需求灵活编写,在这一点上个人觉得WPF略胜一筹。有了界面之后,剩下来的就是具体控件的函数响应了。

5、从工作机会来考虑

        目前使用WPF和QT的企业都很多,从招聘网站查找的话,填入对应的关键词,都可以看到很多的空缺职位。这说明两者都有各自独立的市场。也就是说,只要学会了一种,找到一份工作还是基本上问题不大的。这一点上,两者几乎是平手。个人了解的信息,WPF用在非标领域、自动化领域还是非常多的。而QT在医疗、嵌入式、跨平台方面更有优势。

6、从待遇来考虑

        可能因为QT是基于c++开发的原因,难度比c#略微复杂一些,因此QT的高薪职位比WPF还是要多出来一些的。当然,如果是基础岗位,或者3年工作经验之内的职位,两者的薪酬待遇差别不是很大,但是在高薪待遇这部分,QT还是有优势的。这里面一部分是语言本身难度的原因,还有一部分估计是跨平台的原因。

7、个人的想法

        WPF和QT本身,其实没必要做一个非此即彼的选择。最好先学会一个,时间富裕的话,再去学会另外一个,两者的底层GUI逻辑是一样的。我们选择WPF还是QT,更多是公司的要求,或者是客户的要求,本身自己不要有这方面的执念,选择一种认认真真去学就好了。此外,学习WPF和QT的同学可能都要注意下,大家除了学习一般的控件布局外,最好还是要多多加强c语言第三方库、os和业务的学习,这会让自己跳出语言的纷扰,站到更高的舞台之上。

http://www.lryc.cn/news/265180.html

相关文章:

  • 2-高可用-负载均衡、反向代理
  • STM32 使用ARM仿真器设置
  • 【Java】spring
  • C语言中关于操作符的理解
  • Flutter本地化(国际化)之App名称
  • Redis哨兵源码分析
  • 安装Neo4j
  • 华为鸿蒙开发适合哪些人学习?
  • 深信服技术认证“SCSA-S”划重点:命令执行漏洞
  • Flink系列之:Savepoints
  • 使用宝塔面板部署前端项目到服务器
  • Enge问题解决教程
  • 使用yarn安装electron时手动选择版本
  • AIGC:阿里开源大模型通义千问部署与实战
  • Java小案例-Java实现人事管理系统
  • Win系统修改Nginx配置结合内网穿透实现远程访问多个Web站点
  • 如何使用 NFTScan NFT API 在 Base 网络上开发 Web3 应用
  • 【Chrome】ERR_SSL_PROTOCOL_ERROR问题
  • Codeforces Round 916 (Div. 3)(E:贪心 F贪心dfs G tarjan+topsort +线段树优化建图)
  • eNSP错误40,原因三:windows10自带虚拟化软件Hyper-V
  • Maven将Jar包打入本地仓库
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1
  • Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟
  • Ubuntu 常用命令之 less 命令用法介绍
  • 探索Node.js包管理器npm:介绍与使用指南
  • 探讨APP自动化测试工具的重要性
  • el-date-picker日期时间插件只允许选择年月日小时并做可选择范围限制(精确到小时的范围)
  • 在MongoDB中使用数组字段和子文档字段进行索引
  • <JavaEE> 网络编程 -- 网络编程和 Socket 套接字
  • 【计算机系统结构实验】实验2 流水线中的冲突实验