【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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、个人的想法
首先,我们看一下上面两种方案的PK结果,
|-------|-----|-------|-----|
| 评价指标 | WPF | QT | 结果 |
| 语言复杂性 | 容易 | 复杂 | 1:0 |
| 跨平台 | 难 | 容易 | 0:1 |
| 商业 | 不收费 | 收费不清晰 | 1:0 |
| 效率 | 高 | 一般 | 1:0 |
| 工作机会 | 多 | 多 | 1:1 |
| 待遇 | 一般 | 高 | 0:1 |
图表统计来看,WPF似乎胜在容易开发上面,而QT胜在复杂度和适应性方面。所以WPF和QT本身,其实没必要做一个非此即彼的选择。最好先学会一个,时间富裕的话,再去学会另外一个,两者的底层GUI逻辑是一样的。我们选择WPF还是QT,更多是公司的要求,或者是客户的要求,本身自己不要有这方面的执念,选择一种认认真真去学就好了。此外,学习WPF和QT的同学可能都要注意下,大家除了学习一般的控件布局外,最好还是要多多加强c/c++语言第三方库、os和业务的学习,这会让自己跳出语言的纷扰,站到更高的舞台之上。