用Qt已经4年了,我来说说感受。
在我用Qt的这些年里,Qt一直处于不温不火的状态。有很多公司用,如YY、WPS这样用户过亿的产品,也有不对普通用户的军工、船舶。最近在汽车这块也比较火。但是Qt没有在被大规模的采用,往往是只有部分行业内Qt的使用率很高,这的确是事实。
Qt是我的主力开发框架,我拿Qt开发了客户端,服务器端,桌面端,移动端甚至还包括点嵌入式端。这这之中我遇到了很多Qt的不足以及Qt的强大。考虑到题目定义,在本回答中我主要讲不足。
0.互联网时代了,很多人已经答过这个,不展开了。
1.开发人员不足:这是我现在发现Qt这个生态系统里最大的问题。因为缺少开发人员,导致企业难以招到高质量的Qt工程师,然后不愿意展开Qt的项目,这简直就是恶性循环。我见过有公司因为担心招不到Qt工程师,直接把已经做好的产品雪藏,再用HTML5重新开发一遍。
2.工程师们对Qt认知普遍落后:直至今天,Qt从4.8开始推出的QML(QtQuick框架,计划是代替QtWidgets)仍然没在Qt圈子里普及,甚至很多人都不知道这是什么以及这个能干什么,这更别说其他工程师们了。
3.学习成本高:Qt有QtQuick,这个开发起来非常方便,但是这毕竟是新的框架,带来了新语言和新的开发模式,这意味着学习成本,很多人看到就望而止步,拒绝学习(没错,是拒绝学习),我本人也是在接触Qt两年后才慢慢接触这个框架。才发现这是好东西。退一步说,就算是只用QtWidgets,这也是C++,这个入门成本太高。套用我以前同学和我说的话:如果我学的是Web开发,我第一天就可以做出可视化的成果,用起来还不错。但是如果是C++,几个星期了说不定还是黑乎乎的控制台,学习的兴趣一下子就没了。
4.硬件要求高:我认为Qt的未来在于QtQuick,无论桌面、手机还是嵌入式。但是QtQuick对硬件要求很高(相对QtWidgets而言),没显卡,或者显驱不完善,不好意思,直接拜拜,跑不起来。很多公司因为这个,放弃了QtQuick,回到QtWidgets,去纠结那个C++到底适不适合开发界面的问题。甚至直接抛弃Qt。
5.太大:一个HelloWorld 10多MB,我觉得这个正常,毕竟Qt不是系统级别的库,但是很多人接受不了。另外Qt自己也出了lite计划,降低Qt的大小以及对硬件的依赖(一起解决我说的4、5两点),但是截止我编写本答案,该项目仍在开发中。
6.宣传力度低:举个例子,Qt以前就有一个虚拟键盘的组件,但是只给企业版,然后前段时间给开源了。但是我问过很多很多人,他们连有这个东西都不知道,仍然自己在造轮子。还有其他很多东西都是如此。其实这个来源的信息都是公布到官方的blog,但是是英文,很多人估计都不会去看一下。
7.授权协议:目前Qt是GPL和LGPL,这个就不用我详细解释了吧,动不动就要开源。除非买企业版解除这个限制,但是企业版又是一个大开销。
其实啊,我还是挺喜欢Qt的,千万别说我在黑Qt。
结论:Qt的前途是光明的,但是道路是坎坷的,Qt加油。
你想要怎样火?
Qt只是成千上万的C++ Framework/Library之一,举办个开发者大会能来上千人,而且每年在世界多个国家举办。
你帮我想想还有几个这样的 Framework/Library?
其实论做UI交互,Unity3d才是最牛的。
同样是拖控件,一次开发随便部署。
Windows、Mac、Linux通杀。
安卓、IOS通杀。
PS4、XBOX、Switch也通杀。
还能发布Webassembly,直接跑在浏览器上。
你能想象用PS4外接键盘,在电视上做表格是一种什么体验嘛?
支持鼠标控制、手柄控制、触摸控制,也支持重力感应、陀螺仪、蓝牙控制器。
能玩Socket通信、能玩http通信、还能玩串口通信。
而且最牛的是,它只需要写一遍代码,就能一次发布到26种平台上。只要定好锚点,分辨率就会随着屏幕大小自动适配,无需修改一行代码。
与之相比,QT无论生产力、功能性,还是生态资源、跨平台性,全都毫无优势。。。。
好看不代表强大
Qt 最牛的地方在于保证顶层接口不变的情况,可以更换更多的显示引擎,这是从娘胎带来的优点,
因为一开始就要在不同的OS上显示,早期 Framebuffer,DirectX 等都带支持。
这样做有一个好处理就,你原来积累的大量经验代码可以无鏠对接到新的系统去。
到后面因为变成新的引擎切换方便,慢慢会在一些独特领域形成新的优势
如比 Qt for Webassembly 可以直接把原来的C++程序编成webassembly程序在浏览器里运行,并且性能没多大损失。换句话你可以把原来大量用C++写的游戏移植到浏览器运行。甚至是手机浏览器运行。想想应用场景有多大。
另外一个我估计 Qt for Flutter 也一定会搞出来
这里有一个非官方的 Qt for Flutter 版本,有兴趣可以了解一下
therecipe/flutter: Qt binding for Flutter/Dart | Showcase exa...
Qt binding for Flutter/Dart | Showcase example for https://github.com/therecipe/qt - therecipe/fl...
原文链接: https://github.com/therecipe/flutter
加上已经推出的 Qt for MCU ,相当于手机,网页,单片机可以重用,未来前景还是很大
主要还是缺乏应用场景了。QT还是以桌面开发为最大优势,目前总体来说,WIN桌面平台已经做下坡路了,现在都是去搞移动开发了,搞桌面的还有几个?大量的人把时间花费在手机上了。桌面已经越来越没有需求了,QT再好,也缺乏用武之地。