对QT的产品,以及QT的一些综合评论 good
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
对QT的产品,以及QT的一些综合评论 good的更多相关文章
- QT征程之初识qt
下载 https://www.qt.io/cn/download-open-source/ 下载QT离线安装包 Qt 5.5.1 for Linux 32-bit (546 MB) (info ...
- Qt环境搭建(Qt Creator)
简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World.下面主要讲解如何利 ...
- QT核心编程之Qt线程 (c)
QT核心编程之Qt线程是本节要介绍的内容,QT核心编程我们要分几个部分来介绍,想参考更多内容,请看末尾的编辑推荐进行详细阅读,先来看本篇内容. Qt对线程提供了支持,它引入了一些基本与平台无关的线程类 ...
- QT-【转】Qt 4迁移至Qt 5
将Qt 4代码迁移到Qt 5还是比较简单的.实际上,在Qt 5开发过程中就已经注意了与Qt 4代码保持兼容性. 与Qt 3到Qt 4的迁移不同,Qt 5的核心类库并没有做大的API的修改,只有几个新的 ...
- Qt4.7文档翻译:Qt样式单参考,Qt Style Sheets Reference(超长,超全)
内容目录 Qt样式单参考 可进行样式设置的部件列表 属性列表 图标列表 属性类型列表 伪状态列表 子控件列表 Qt样式单参考 Qt样式单支持各种属性.伪状态和子控件,这样使得妳能够自行设计部件的外观. ...
- Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作 (转)
大致流程: 1.安装Qt(源码版)以及其他必要的环境 2.编译/安装 3.配置 4.使用 ----------正文分割线---------- 1.安装Qt(源码版) 1.1 下载Qt(两个地址二选一即 ...
- qt学习教程1.qt开发环境搭建
qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...
- 【Qt编程】基于Qt的词典开发系列<四>--无边框窗口的缩放与拖动
在现在,绝大多数软件都向着简洁,时尚发展.就拿有道的单词本和我做的单词本来说,绝大多数用户肯定喜欢我所做的单词本(就单单界面,关于颜色搭配和布局问题,大家就不要在意了). 有道的单词本: 我所做的单词 ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局
-----工程WindowTest----- 1.-----窗体类型type.cpp----- #include <QtGui> int main(int argc, char * arg ...
随机推荐
- 【Excel VBA】金额大写转换
=IF(ROUND(A1,2)<0,"金额为负无效",IF(ROUND(A1,2)=0,"零元",IF(ROUND(A1,2)<1,"&q ...
- Swf Decrypt详解
http://www.2cto.com/Article/201507/414477.html 攻击在持续,攻击的技术在演进.防御者需要持续的跟进研究和投入.最近Flash 0day频繁出现,将我们更多 ...
- shell小程序
因此需要挑选学生,因此需要一个抓阄的程序:要求:1.执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字.2.第 ...
- 如果利用storyboard创建cell中标识符identifier的正确设置
今天打算用storyboard直接生成cell,但是总是提示数据源没设置,一直报错. 我就奇了怪了,明明标识符设置了,但是还是不行,仔细分析之后才发想,原来是因为标识符位置填错了.请看下面截图中正确的 ...
- sublime text 使用
一.在sublime text中创建html.css.js文件 ctrl+shift+p(调出控制台) 然后输入 Set Syntax:html(也可以输入:ssh) Set Syntax:css ...
- 九度OJ 1505 两个链表的第一个公共结点 【数据结构】
题目地址:http://ac.jobdu.com/problem.php?pid=1505 题目描述: 输入两个链表,找出它们的第一个公共结点. 输入: 输入可能包含多个测试样例. 对于每个测试案例, ...
- 1.MySQL的安装(linux Ubuntu环境下)
首先先检验一下系统中是否已经安装有mysql: deamon@deamon-H55M-S2:~$ sudo netstat -tap | grep mysql [sudo] password for ...
- RabbitMQ远程访问配置
1 首先创建一个新的账户 并给上Administrator标签 2然后给这个新账户添加虚拟主机访问权限 3在windows 下的 rabbitmq安装文件下的etc文件下的配置文件添加以下 [ ...
- C#与.NET
1 .NET Framework的核心是其运行库执行环境,即公共语言运行库(CLR)或.NET运行库,一般将CLR控制下运行的代码称为托管代码(managed code). 在CLR在执行编写好的代码 ...
- 懒加载 lazy load
懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据, 而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用. 比 ...