標籤:

為什麼 Qt 框架不是很流行?

qt非常優秀,而且不單單是圖形庫,為什麼國內的眾多互聯網企業寧願自己開發一套圖形庫也不用現成的qt?(比如迅雷就自己開發了圖形庫)是因為授權嗎?qt花大力氣適配移動平台為什麼沒多少人用?


這些所謂的大公司,因為不用qt吃了虧。如360,迅雷,qq,等等。你看國外開發的軟體很多都是跨平台,但國內的軟體跨平台很難。目前只看到wps做的還可以,但在osx下也沒有。這樣導致國內這些公司研發成本非常高,各個平台獨立開發,軟體界面也很難統一,降低其他平台的用戶體驗。不過現在騎虎難下了,因為商業需要只能硬著頭皮維護下去,浪費了公司大量的人力財力。

你想想firefox,chrome,virtualbox,mysql,maya,photoshop那個真正技術上優秀的軟體不是跨平台的,雖然它們不一定使用的是qt。

國內公司只是市場驅動的,它們不是真正技術驅動的公司,很多軟體都是用開源改後包裝成自己的,依靠壟斷存活的,對版本根本不會重視,所以用mfc或directui這類專用框架比較多。


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太重了。。。


因為他把一件簡單的事情搞複雜了. 然後 5.0 以後的 QML 又和 CSS + HTML + JS 碰車. 碰車不要緊, 主要是 QML 排版部分完敗 WPF 和 Web Browser. 然後嘛, QML 和原先 QT 那套 native 是兩套體系, 不上不下的定位完全讓人不能明白這個框架到底想要做什麼.

和商業收費什麼的完全沒關係, 就是難用. 而且讓技術人員看不到投資他的遠景. 你說 WPF 嘛, 微軟後台硬, 未來 WinPhone 流行了, WPF 跨平台了都會讓技術人員感覺到正能量. 然後說 HTML5 嘛, 顯然很吃香, 未來根本不愁吃穿. 所以, 作為開發人員, 顯然選擇自己能理解的, 順手的, 又能看到遠景發展的技術.

QT native 部分的技術定位和 MFC, wxWidgets 類似, 我不能理解這種 UI FrameWork 在聲明式 UI 和 IM GUI 普及的時代, 有何存在的意義. 然後 QML 部分的定位尷尬, 導致現在的處境再正常不過了.


我從這幾年使用QT開發中發現的問題說起吧。我使用Qt開發過3個桌面平台項目以及2個4平台(win、Mac、android、ios)項目。

如果是創業型小公司想開發適配自己公司產品的配套軟體並想支持多平台那麼Qt是不二的選擇。想在4個平台開發軟體假設工作量是4,那麼用qt可以達到2.5左右。總體工作量減少,但是如果你只想開發一個android軟體工作量為1,那用qt 可能會達到1.2到1.5看是否涉及了過多的平台化的東西。Qt傳統的widget體系繪圖使用的是CPU,在移動平台上效率過低。由於是基於跨平台考慮,代碼結構上需要架設中間層進行適配,效率上會有所下降,比較明顯的就是socket在高並發時Qt的性能問題就體現出來了。

從產品開發的體驗上看每個平台都有其特點,帶有平台特點的產品從體驗上感覺會更好,但使用Qt開發很多平台化特點的東西需要單獨去添加反而工作量增加。大公司人力不缺,為了將體驗做到極致,native編程明顯更好有話空間更大。而Qt受到跨平台框架限制很多地方不能進行優化,最終結果跟native編程肯定有差距。

舉一個簡單例子。開發一款帶有書寫畫線功能的軟體使用Qt肯定是希望跨平台。畫線選擇直接在一張圖上噴塗更新圖片的方式來實現,在win、Mac、android下效率還OK但是在iOS下效率不能忍受。使用矢量線噴塗方式iOS下還OK但其他平台效率不如噴塗圖片。

諸如類似問題還有很多,我覺得效率與可優化方面的限制導致Qt不流行。另外移動平台方面Qt還有很長的路要走。桌面平台的開發我覺得Qt還是可以的,暴雪的登陸器就是Qt開發的。


看怎麼定義流行了,Qt使用很廣泛,但是不火,在桌面Linux和嵌入式領域是主流地位


因為他是LGPL協議的,所以很多軟體(譬如支持開源的google寫的chrome)為了不開源或不完全開源,就自己寫了個庫帶進了程序里。你在Linux下面會發現很多類似的現象。


一個我的笑話:我初學C++接觸的第一個庫就是Qt,寫了一個記事本,想給同學炫耀炫耀,於是打包,結果QtCore4.so和QtGui4.so加起來就10+MB,他們都笑我做了一個重量級的記事本。。。

補充: Qt真的很優秀、很酷,之後我一直沒有停止過對它的研究,csdn: http://blog.csdn.net/unixzii


qt也算是應用很廣的了,不過要說火,要看什麼領域、

pc端:

windows不用說,微軟自家的mfc,wpf等一系列的產品。

linux,應該說qt是比較強大的,很多發行版都有qt界面,比如kde ubuntu。但是linux下面還有一個一個很強大的對手gtk+,qt只是碎片化的一個選擇。

osx ,蘋果自家的非常強大,所以基本上沒太大的勢力。

手機:

安卓,ios,wp一個用java,一個用object-c,一個微軟自家,我記得qt可以用來做app,但是需要編譯成其他語言,這種實現方法,自然基本上就沒什麼人用了。

唯一一個異類,是ubuntu phone,就是那個眾籌失敗,掙扎著還在慢慢發展的手機系統,我當時出於對ubuntu的好感,去學習了下,ubuntu phone就是用qml來做app的。但是現在的ubuntu phone還是猶抱琵芭半遮面的情況。。。。。

qt的思想優秀,但是在pc端,每一個主流平台都有強大的自己的框架,linux這樣自由的平台,又有很多選擇,比如gtk+,所以在任何一個平台都難以火起來。

手機端塞班一死,qt基本上就完全沒作為,也沒法作為。

最後我想說一句,作為一個曾經短暫學習過qt的人,qt creator完全和eclipse,xcode,vs沒法比,官方ide不太盡如人意,也是一個問題。


不適合潔癖

像boost就很適合潔癖,開發人員花了大把精力研究語言,我們用信號只要包含個頭文件就好了。

Qt你用個信號槽,翻譯功能需要用到moc當然可以接受,可你用個容器,流都要創個新項目有點難忍。

而且哪個平台都希望開發人員用自己的api,不需要跨平台的話Qt也很難和他們較勁。

當然這都是小事,所以Qt還是很流行的,QML在跨平台里還是很好耍的。

至於題主提到的現象,一般選擇一門技術有很多和技術本身沒有關係的因素。


問為什麼之前,應該先問是不是。

好吧,我也學會了這句話……Qt 已經是非常非常非常成功和流行的框架了,至今仍然是跨平台 Native UI 的不二之選。


作為一個精通qt的碼農 我想說qt現在這種半死不活的境遇 與size有一毛錢的關係 純屬自己做死 怨不得別人 沒那個實力 又想強推標準(qml) 說是跨平台 真正能有的也就是 linux pc 其他全部半成品 坑爹 填坑的時間早就超越native的時間了 老在這扯wps yy 哥硬是沒看到一個qt。dll


主要原因是當前主流不是c++


問題是客戶端跨平台沒有優勢,國內基本上是windows


沒有使用過QT,但是本人有密集恐懼症,看到幾百萬行代碼直接想死,哪有學習的心情。QT其實就是個大號的MFC,龐大繁雜,僅僅比MFC好的是跨平台和消息綁定機制。

跨平台APP軟體開發工具——Lae全面介紹 - 覃小虎的文章 - 知乎專欄

lae是使用c++開發的一個工具平台,採用組件模式,所見即所得、機制簡單、跨平台、布局自由、內存透明、lua邏輯純粹、自定義控制項簡單等優點,可以應用於PC工具軟體界面,APP開發、遊戲界面開發,很方便集成第三方代碼,也可嵌入任何c++工程里。


QT Creater難用,各種操作不適應,界面還丑,設計風格感覺就是Windows XP時代的水平。

而且比較封閉,需要使用自家的QMake編譯,雖然官方給的有使用CMake編譯的方法,但一直不成功。這就是說,你要想開發QT的東西,QT Creator的難用你就得忍著,很難遷移到CLion等其他IDE裡面。

現在流行的是lightweight,而這個QT太重了,類庫組織還非常碎片,一個類一個header在寫的時候未免有些麻煩,我個人認為複雜系統組織庫的時候最好一類class放一個header裡面。

還有,Qt的優勢是跨平台,可以寫Linux/OS X下面的應用,然而國內主要用的還是Windows,win裡面有MFC,也有WPF,誰還用Qt啊


WPS 使用QT幾個核心庫的,看看安裝文件就知道了。


太麻煩,對於初學者來說文檔根本看不懂。我當時直接學wxwindow去了,反正是為了完成作業!


開源協議倒是其次, 反正幾年前各種音視頻軟體有幾家遵守了開源了? 還不是該拿來就拿來.

這要結合國內PC軟體談起:

一是國內PC軟體主要面向windows平台, 不需要考慮跨平台, qt唯一的優勢就喪失殆盡了.

二是開發人員成本低, 一個靠譜的程序員, 幾個月內就能用源生win32或者WTL擴展出一套"界面很酷"的界面了, 也容易自己維護, BAT金山360等等各自都有一套易用的輕量界面庫.

三是軟體成本低, 軟體大小可以控制在幾M, 減少下載成本, 這在幾年前網盤與10M寬頻還沒流行時還是很重要的.

------------------------------

談的是幾年前的印象, 現在的沒看過...


推薦閱讀:

哪裡有QT項目視頻教程下載?
qt中界面美化使用QSS的話有什麼好的模板或者開源網站提供qss文件?
Qt如此強大為什麼就是火不起來呢?
初學QT,課本看不下去啊,請問前輩們知道網上有什麼教學視頻講得比較通俗易懂的嗎?
web程序員應該如何學習C++?

TAG:QtC開發框架 |