Qt如此强大为什么就是火不起来呢?

论坛 期权论坛 期权     
爱的用户   2020-6-14 01:27   17225   10
举个例子,Qtdesigner中直接就有日历控件,拖过来就能生成一个简易日历软件了。Qt真的很强大,但为什么就是火不起来呢?跟开发出它的公司不出名有关嘛?
分享到 :
0 人收藏

10 个回复

倒序浏览
2#
热心小回应  16级独孤 | 2020-6-14 01:27:39
用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加油。
3#
热心小回应  16级独孤 | 2020-6-14 01:27:40
1、题主说到点子上了——Qt没有个好爹。从最早的TrollTech,到后来Nokia,再到Digia,现在甚至独立出来自己上市了……
什么叫做好爹:
  • 紫色史诗级好爹——能够制定标准,如Mozilla
  • 橙色传说级好爹——自己就是标准,如Microsoft、Google
显然Qt前后三个爹都不够格……

讲真,Qt如果有个好爹,元对象系统和信号槽早进cpp标准了。元对象可以实现反射,而且对象内存依旧紧凑,直接代替type_info作为typeid的返回值。这俩一起放RTTI里,多完美。

2、C++本身就不火。C++领域内Qt算是很不错了,有GUI的地方都有它,有嵌入式的地方一般也有它,然后金融、工业、游戏、多媒体这些行业也有它。就如 @姚冬 大神所说,Qt在C++领域已经相当火了,但架不住C++本身不火,现在是互联网的天下……
4#
热心小回应  16级独孤 | 2020-6-14 01:27:41
你想要怎样火?
Qt只是成千上万的C++ Framework/Library之一,举办个开发者大会能来上千人,而且每年在世界多个国家举办。

你帮我想想还有几个这样的 Framework/Library?
5#
热心小回应  16级独孤 | 2020-6-14 01:27:42
从事前端十来年,简单说说目前几个主流fw在本行业的特点(无责):
1.flash/flex/air:
优点:简单;高效;可视化;跨平台(除了ios);十几年的积累各种成熟类库;可以拿来做快速生产;特别是简单交互类的项目!!!!
缺点:adobe放弃治疗了;底层操作不多;如果做大项目则需要有丰富的优化经验,否则绝对是挖坑。
2.winform/wpf/uwp:
优点:非常适合做软件;性能不错;底层操作性强;语法不反人类;语法糖加持;成熟类库非常多;大学有c#课。
缺点:容易被雅黑;nuget被墙,需要vpn;手机无望;个人认为非软件项目不是最优解。
3.xamarin:
优点:具备1和2的优点而且没有1和2的缺点。
缺点:智联招聘关键词一下。
4.qt:
优点:跨平台;性能好;可以用js搞;ui相关功能非常强大,基本不需要找第三方库;特定领域有优势;qml和示例对新手友好。
缺点:qml不是万能的,一旦需要在qml中调用qml做不到的事会很麻烦;js和c++各有利弊;非主流的设计思路可能会让你难受;英语不行请放弃;不会翻墙请放弃;另外智联招聘看看待遇,给我一个不学java大数据。
5.node.js
优点:未来之星;做软件请用electron,做交互请用白鹭,可桌面可移动;上手容易;ts能够弥补js的很多不足;大量成手设计师和开发者;
缺点:需要有人带你掌握各种构建工具;如果你在非互联网公司(尤其是上网管制的企业)工作,请考虑pass。
6.java
还是去做大数据吧。

每种技术都有他的优缺点,一定要根据项目和公司技术积累的具体情况考虑,不要盲目追新,但也不能一味守旧。
最后一句话:存在即合理。
6#
热心小回应  16级独孤 | 2020-6-14 01:27:43
其实单片机,工控领域用得还是挺多的,用得好的话可以写出资源占用极少且漂亮的GUI程序,毕竟这些领域后端逻辑本身就是c/cpp写的,使用qt,对于逻辑开发人员来说可以前后端打完。
qt最大的优势是跨平台,但是实际上很多控件在不同的平台表现却无法统一,甚至是无法跨平台的。比如QSystemTray,也就是系统角标,在gnome3以上就失效了。而且mac和gnome2的角标菜单里面是可以再塞控件的,但是为了平台统一的api只能砍掉这些平台相关性的特色功能。再比如QMedia的后端,没被它坑过的人是幸运的。
其次QtQuick,这东西几乎就没推广起来,你现在随便买一本书几乎就很少涉及QtQuick。首先这个东西是需要肯定的,它让开发qtquick就像使用es6+react工程化开发web前端一样,并且操纵的是opengl绘制控件,特效爆炸,动画流畅,体验可以说完爆html5甚至平台原生控件。实际门槛比工程化web前端又要高很多。没有推广起来的原因也是多方面的。首先它使用的并非平台原生控件而是使用opengl单独渲染的一套组件。想象一下你打开一个qtquick应用等于进入了一个游戏菜单界面。这就注定了它很难推广。孱弱的工控领域是无法忍受如此高的资源占用的。其次开发它的语言是qml,很多c/cpp工程师其实天然抵触web前端,叫他们以极其像web前端开发模式去做开发是很难的。而且“我明明使用cpp就前后端打完了嘛,为什么要增加我工作量?”
然后体积肿胀,这对于一些对体积有明确限制的应用来说是不利的,比如输入法,会直接推高推广成本。
还有一个licence的问题,GPL,LGPLv3。
最后没个好爹。。
7#
热心小回应  16级独孤 | 2020-6-14 01:27:44
Qt 还是挺火的,至少在行业软件领域还是很火的,我认为 Qt 应该是当下最火的 C++ 框架。

在嵌入式领域 Qt 处于统治地位,比如据我所知,大量的医疗设备使用 Qt 作为 GUI 框架。在桌面端,国内知名的消费软件 YY、WPS 都使用了 Qt,还有一些桌面 webkit 内嵌应用也是用 Qt WebEngine 开发的。

另外我说一个大家可能不了解的行业:安防监控。

安防监控领域对 Qt 的使用相当广泛。在国外基本上是 Qt、WPF 分庭抗礼,在国内,早年间以 MFC、delphi 为主,几年前,大厂商已经全面转向 Qt。比如海康威视 iVMS 系列,大华技术 DSS 系列软件平台,目前绝大部分界面基于 Qt 实现。

在这个领域内,国内有两家市值百亿美金以上的大企业,另有若干年产值 10 亿人民币以上的中型厂商。所以如果你喜欢从事 Qt 开发,又找不到满意的岗位,去安防监控领域试试,机会很多。
8#
热心小回应  16级独孤 | 2020-6-14 01:27:45
1. Qt 目前还是蛮火。只是互联网时代了,火大不起来。
2. C++做软件,在于小而美且快,Qt一搞就大了,大了让大家都觉得美就很难,大了也快不起来。
3. Qt作为一个库,一直在追求大而全,无所不能。这是它最大优点也是最大的弱点。

4. 亲妈的确不咋滴,后妈更不咋滴。作为一个库,是否出生名门很重要很重要很重要啊。

PS: 名字是Qt,  不是QT或qt或qT,楼上说错的,都应该烧死烧死烧死...
9#
热心小回应  16级独孤 | 2020-6-14 01:27:46
大家应该关注一下黑莓qnx系统的重新兴起。

这个系统基本只能用qt开发。
10#
热心小回应  16级独孤 | 2020-6-14 01:27:47
老外也有这样的疑问, 然后一堆人回答,这是其中一个最高票的为什么不用QT的回答:
原地址: Why aren't more desktop apps written with Qt?

I don't really intend this to be a bashing answer, but these are the reasons I do not personally use Qt. There are plenty of good things to say about it -- namely that the API works most of the time, and that it does seamlessly bridge platforms. But I do not use Qt, because:
  • In some cases, it just doesn't look like native programs look. Designing a single UI for all platforms inherently is not going to look right when moved from machine to machine, for various visual styling reasons. For example, on Mac machines, split bars are usually relatively thick, and buttons are small and rounded with icons. On Windows machines, split bars are typically narrow, and buttons are more textual, with more square designs. Just because you can write one UI for every platform does not mean that you should for most applications.
  • Qt is not a C++ library. It requires a separate compilation step, which makes the build process much more complicated when compared with most other libraries.
  • As a result of (2), C++ IDEs and tools can flag Qt expressions as errors, because they do not understand Qt's specifics. This almost forces use of QtCreator or a textual only editor like vim.
  • Qt is a large amount of source, which must be present and preinstalled on any machine you use before compiling. This can make setting up a build environment much more tedious.
  • It's available only under LGPL, which makes it difficult to use single-binary-deployment when one needs to release under a more restrictive or less restrictive license.
  • It produces extremely large compiled binaries when compared with similarly written "plain ol' native applications" (excepting of course applications written for KDE).
11#
热心小回应  16级独孤 | 2020-6-14 01:27:48
我前几天写过一个答案:
如何评价 Qt 的发展前景? - 社区Qt 是很有价值的工具。用了之后如果过段时间觉得不能满足项目要求再考虑逐渐弃掉也并不困难。但是缺乏粘度加上不是原生终究不利于自身的发展。
另外针对你的问题,我要强调的是「拖过来就能生成一个简易日历软件了」这件事情,大概一年里也就做上两三次。这个功能做 demo 很吸引人,但是对老手完全没有意义。否则你的 app 的功能也就太低水平重复了。某个 SDK 可以没有拖控件的功能,我可能要多花半个小时来调试初始的 layout,但是这个弱点对我来说并不是致命的,因为我可能三个月才需要做这一次。而我这三个月里要完成的其它任务才体现 SDK 对我的主要价值。
所以,拿这个来感受 SDK 的强大说明你的感觉方式不对。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:342608
帖子:68643
精华:1
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP