QT你不能说他不流行吧, WPS, Wirshark, KDE, dropbox, skype, virtualbox都和qt有关吧, 你想写个跨平台的C++程序, QT是个不错的选择, 普通PC应用, 微软和苹果两家是大头, 跨平台要求不高, 小公司小应用做个WINDOWS版就够了, 这种情况下当然用VS那一套东西. 而大公司呢, 他们又偏向为不同的OS维护不同的版本, 成本上高, 但是效果比你写一个统一的跨平台的源代码然后在不同平台上编译要好.
还有个原因是大公司还是希望有自己的库, 因为库是自己的, 想怎么整都行, 出了BUG想先修复哪个都行, 开源库就麻烦点, 说个现成的QT的BUG, system tray icon在unity里显示位置不正常, 不在unity的系统图标栏内, 这是很严重的一个bug啊, 很多软件都会用到这种系统小图标. 就这么个BUG, 提交历时1年多, 从qt5.0到现在5.3还没修复好, 你让用系统图标的应用情何以堪...
我见到炉石传说用了QT。不知道算不算流行。
YY语音
http://www.zhihu.com/question/20431780
Autodesk的Maya都是用Qt写的UI,你不用纠结了,直接用Qt吧。
MAYA的界面就是用QT重写过的啊,很多时候只是不知道而已,不代表不流行吧.
虾米windows客户端.
畅游大厅.
-------------------------------------------------
国外游戏界对Qt的应用很多,许多跨平台的游戏开发工具都是由Qt编写的,暴雪的战网登陆器也是Qt的……国内几乎全是MFC……
-------------------------------------------------
应该是开发的代价与所得不成正比吧,在linux下使用这些娱乐工具的人毕竟少数.况且有了Web这跨一切平台的应用,本地应用的开发就更显得没有必要了,类似webqq,网易云音乐.
-------------------------------------------------
Adobe Google Blizzard AutoDesk都在自己的某些产品里用过Qt,百万级用户量也是有的。
-------------------------------------------------
一定要炫的话,你只能尽量把UI做薄,然后你就可以在现实里面做到windows和linux各做一个UI,共享下面的代码了,就跟office在windows和mac做的那样
-------------------------------------------------
开源协议倒是其次, 反正几年前各种音视频软件有几家遵守了开源了? 还不是该拿来就拿来.
这要结合国内PC软件谈起:
一是国内PC软件主要面向windows平台, 不需要考虑跨平台, qt唯一的优势就丧失殆尽了.
二是开发人员成本低, 一个靠谱的程序员, 几个月内就能用源生win32或者WTL扩展出一套"界面很酷"的界面了, 也容易自己维护, BAT金山360等等各自都有一套易用的轻量界面库.
三是软件成本低, 软件大小可以控制在几M, 减少下载成本, 这在几年前网盘与10M宽带还没流行时还是很重要的.
-------------------------------------------------
这个还是和历史有关啊、、
现在基于Qt的桌面软件越来越多的、、、许多GTK的也在向Qt迁移、、
可以说在XP时代,微软自己有一套MFC,和成熟的vs系列开发工具、、
而Qt-Creator是09左右才有项目。Qt早期的授权协议也是商业为主,开源部分是QPL,这个没有LGPL那么开放的。MFC后来淡出视野,在微软的平台上出现DUI这种直接绘图的了、、而专门做win软件的也慢慢有自己封装的UI库了、、
-------------------------------------------------
Qt是一套库,C#是开发语言不是一个层级没法比较,不过仅限win平台的话还是C#吧,微软自家的东西,.net底层肯定很多在win下的优化,不过,感觉Qt还是学一下的好,本身有很多语言绑定,开源库最大的好处是能够学习库和框架开发人员的技巧和思想,qt本身基于元对象和信号-槽机制两大思想,这两个思想都非常厉害。还有不要太在意工具,也不要嫌这嫌那,如果是自己用的话,纠结那么多干嘛。。。不过话说你有mac为啥不老老实实在mac下呆着?大部分工具mac下都有不要非得纠结win吧。
-------------------------------------------------
不管你用什么,能做出好东西就是好程序员啊。考虑太多前途性的东西,不利于你的进步。因为程序员不是个靠一个语言一个库能混一辈子的职业。
-------------------------------------------------
如果想开发界面程序,并且有能够深入理解Windows的机制,特别建议用WTL,WTL是微软ATL的那些人开放的一个WindowsGUI程序开发的模板库,无论是迅雷的Blot还是金山的界面库,还有腾讯的界面库,基本上都是在WTL的基础上搭建起来的,WTL解决了一个重要问题,Win32窗口类必须是全局函数,所以用类封装的时候,必须用一些取巧的机制才能顺利的封装窗口类,并且又不失效率,而WTL的thunk机制非常先进,成功的解决了这个问题。在追求效率和开发速度,WTL都做的不错,模板技术的使用使得编译后体积和运行速度远远优于MFC,C#没有Native的时候,WPF开发的程序一旦体积巨大,问题就会暴露出来。Qt,在Windows上体积太大,信号和槽的机制和Windows消息机制存在一定的差异,封装过程的代价还未可知。所以个人看法建议使用WTL,唯一不足是WTL并没有得道官方的正式支持,但代码依然在更新,最近增加了Nuget的支持。
参考:http://www.zhihu.com/question/24461881
-------------------------------------------------
Qt的好处是有很多语言版本,比如c++ & qt,python & pyqt,java & qtjambi,nodejs & node-qt,c# & qt#等等,我试过pyqt5,很成熟很好用。
-------------------------------------------------
从来只有不学什么找不到工作,没听说学了什么反而找不到工作的
如果你真的真的深入学习了Qt
那么可以去试试看以下公司:
Blizzard,暴雪的游戏的客户端安装引导界面是 Qt 写的
Autodesk,Maya客户端是Qt写的
Wolfram,Mathematica的客户端是Qt 写的
能去以上公司的人根本看不上BAT的职位好不好
-------------------------------------------------
都深入学习了Qt,先列列看完哪部分了吧?
其实各平台QPA都看完,什么Windows API、Cocoa/Object C、X11/Wayland、Java等都没啥难度了吧... (注:QPA就是Qt Platform Abstraction,发布前内部名称是lighthouse,主要处理Qt和各平台之间的接口。代码在 http://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms 还有一部分在qtcore里面)
其它大坑还有很多。
-------------------------------------------------
Qt的商用授权需要付费。基本上大的第三方软件,如QQ、迅雷等,都有一套自己封装的界面库。使用Qt的软件,大部分都是开源软件;或者开发商不愿意自己耗费精力去封装界面库,比如豆瓣FM和YY语音。
-------------------------------------------------
因为mfc为微软官方的。但Mfc为c++发展初期,大量使用宏,但当年windows火红时是最牛的开发工具。而qt相对比较年轻,又有跨平台需要,所以用户相对变少。
但现在看来mfc开发的程序只能运行于windows平台,而qt开发的软件通过编译可以跨平台。
现在很多互联网公司搞的客户端,都有linux,osx,windows多个版本,很多都是独立开发的,或使用内部库,但这样成本很高。这种方式造成多个客户端更新不同步,功能有限,维护复杂,开发成本高,等很多问题。
wps因为使用了qt,所以跨平台容易。无论大小公司,新开发软件建议使用qt,因为其他平台开发成本和qt差不多,但qt代码复用好,能节省开发成本和降低复杂度。就算目前只运行于windows下的软件,也建议用qt,因为那一天跨平台了,可以赢得更多用户。
自已开发一套跨平台ui界面,如firefox xul,成本高,不成熟。也不利于学习交流和招人。
Autodesk maya,wps,skype,这些软件使用人数都很大,跨平台特征能赢得更多商机。
参考:http://www.zhihu.com/question/24316868
-------------------------------------------------
貌似有人觉得我答的文不对题。其实我只是想说,好工作容不容易找,你会使用什么工具并不重要,相比之下,内功更重要些。
但那些实诚话估计也没什么人爱听,大家都比较喜欢画个大饼,然后精神上充充饥就可以了。
鉴于答主这么早就回复我,我就补充些答主可能更想听的吧:
你说 Qt 的工作,我理解是专职写 Qt 的岗位,这样的岗位,很少见。可能我的见识浅,但你可以自己去参考一下各种公司的招聘,包括 Blizzard,Autodesk,Wolfram之类的,看看有没有专门招聘 Qt 的岗位。(我看到的基本是招 C++ 工程师,会 Qt 锦上添花)
用 Qt 基本都是在写客户端。首先,你觉得现在客户端的需求有多少?其次,客户端里 Qt 是独占鳌头的吗?(你让 C# 的那些何以自处?)最后,用 Qt 写客户端的公司,需要多少人来写页面逻辑,交互部分?(一个功能模块,最好写的就是页面和交互,成熟的公司都有自己积累的组件封装库,调用起来都是极其容易的,难点是后面的计算、处理、渲染、等等需要 C++ 与算法 的部分)
再说,你所谓深入学习 Qt,在我看来,有两个层次:
1. 非常熟练掌握 Qt 各种 API
2. 对 Qt 的内部设计,源码等等都有深度涉猎
如果你的目标是达到第一个层次,就如我说的,需求很少,Qt 就是个工具,学习成本很低,用到的时候熟悉一下需要的 API 就基本可以满足日常工作了。弄成个文档通,一点必要也没。
如果是第二个层次,就像楼上 @姚冬 前辈那样的,那早就超脱了 Qt 的范畴了好吗。要达到这个层次,哪里是光深入学习 Qt 能行的,我上面说的那一大堆基础知识,以及反复实践所培养出来的软件素养,都是必备的。如果真能到这个层次,我觉得找工作也用不着在这问了。
简历上 熟练掌握 Qt 也应该摆在最后一列了。(除非公司点名要 Qt,但上面说了,这种岗位极少)
我希望你能理解我讲的重点。Qt 只是一个工具,只不过恰好比较趁手而已。其本质在于对 C++ 的理解与运用,更深了,就是对于我说的那些专业课的认识程度。
如果你掌握本质,你会担心 Qt 过时吗?会担心将来需要换另一个工具吗?那都是无所谓的。
利益相关,工作中需要使用 Qt,个人非常喜爱 Qt,平时也爱研究 Qt。我并不是一个 Qt 黑。。。
参考:http://www.zhihu.com/question/28548462