一、Qt的优势
优势编辑
优良的跨平台特性:
Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
面向对象
Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。
丰富的 API
Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理功能。
支持 2D/3D 图形渲染,支持 OpenGL
大量的开发文档
XML 支持。
特别是Qt在嵌入式应用程序开发过程中,Qt技术有着不可或缺的地位,并且随着嵌入式设备的飞速发展,Qt的应用也会得到前所未有的发展。
关于职业机会,大家可以在中国人才热线上查看一下,针对一、二线城市,还是有不少职位的。但这里有一个问题,就是QT的薪资水平是不是和自己的心里价位还有一定的距离,这里我们主要说一下QT的发展前景。
严格说QT目前在国内的流行程度比不上Java、python、C#和JS,QT是一个桌面应用程序框架,但是Qt中现有的QML也可用于开发前端。
用Java做桌面应用的,几乎没有(Androd的APP除外);Windows的桌面应用,以C#使用的为多。实际上QT是可以做跨平台移动APP的应用的。当然也可以做嵌入式的应用。那么在移动APP领域,好像QT在国内没有什么市场,可能有一下几个方面的原因:
懂得用Java开发android应用的开发人员较多,公司现有的移动应用已经成型,贸然的换一种开发框架,承担的风险较大。
对于苹果APP,也存在同样的道理。
QT是用C++开发的,C++的语言基础要求较高,会的人相对较少(有点疑问,IOS应用大多是用Object C开发的,如果IOS的开发人员,转向QT是不是成本较小)。
公司的担心,一般说来在公司内部,移动应用开发人员的工作量,相对于后台及Web应用的开发人员,是不多的,或者可以说移动应用的开发人员是相对清闲的。想换一种开发框架来提高开发人员利用率,但现有的应用维护如何处理;此外,跨平台的框架开发人员在哪里?最后,跨平台开发框架的成熟度如何,可以达到目前的移动应用水平吗?
对于目前正在做移动应用的开发人员,可能存在什么样的机会和职业风险?
如果你正在做android开发,此时你学习IOS移动应用开发,无疑多了一份职业保障和竞争力;反过来对于正在做IOS开发的,学习android开发的也是如此,公司总是希望你什么都能做的,对吗?
所以说,只会单一开发的开发人员,在未来的竞争中,被淘汰的概率较大。
那么问题来了,我们拿做android开发来举例,不妨有两个选择:第一个选择:学习IOS开发;第二个选择:学习QT
学习IOS:需要学习成本,学习完后,可直接进入IOS开发,开发框架成熟;
学习QT:需要学习成本,学习完后,需要做些移动应用的练习,也可进入IOS的开发,开发框架成熟;
学习IOS的资料很多,不做过多说明,这里简单介绍一下QT的情况,以方便开发人员做选择。QT的版本迭代每年有1-2个大的版本,4到5个小版本,发展势头较大;在国外的开发领域,QT的影响力比国内要大得多。
QT从开发层面上有前端开发后端开发两个部分,前端开发有分为QWidget和QML; 前端开发:
QWidget:用C++封装的显示控件,C++的编程经验;
QML:类似于HTML和JS,和C++一点关系也没有,目前QML也是QT公司主推的前端显示框架,目前QML多达几百个,而且还在不断的发展中;
后端开发:
C++:支持所有操作系统的桌面应用程序开发
Python
PyQT5:第三方RankRiver公司产品,支持移动应用(android和IOS)开发
Pyside2: QT官方产品,目前暂时不支持移动应用开发
学习QT的顾虑:学习QT一般来说需要学习C++,相对于Java来说,C++的学习曲线更难一些。就我看来,这主要是一个心里方面的问题,C++的概念确实多一些,如构造函数的显示调用,指针、地址、函数参数或返回值中的const概念、多继承的概念等等,如果有Java面向对象的基础知识,熟悉这些概念并不复杂,花点时间明白其中的原理并不困难。所以说学习C++感到困惑,主要是一个心里方面的问题。
前端开发人员可以学习QT吗?
前端开发人员不懂C++程序,也是可以学习QT的,因为QT的前端技术QML与C++没有任何关系,而QT的前端界面占到开发量的50%以上,QML可以由photo shop通过QT bridge插件生成,实际上可以做成任何想要的界面,在没有C++做后台程序的QML前端界面,通过Mock仿真数据,前端界面也可以非常友好,也可以部署到不同的平台,也就是说,可生成跨平台的应用程序(含移动APP程序),只不过后端的逻辑没有支持。
鉴于如上说论述,目前学习QT和QML技术,近期收益有限;远期收益较大,如果开发人员有自己的长期规划,不妨尝试一下QT。