關於“Qt和wxWidgets哪個好?”的觀點


兩個框架我用的都不多,但是覺得他們都很簡單。
有人說wxWidgets相同的控件在windows和Linux表現可能不一樣,這個是正常的,影響應該也不至於太大。大家都在說wxWidgets不值得學習了,因為生態沒有Qt繁榮,有道理,但是我的看待角度不一樣。

1、Qt雖然也是開源的,但只有在發布版本的時候才發布代碼,有人會說Qt代碼托管在Qt自建網站[https://codereview.qt-project.org]上,但是這里的代碼是下載不下來的(反正用git clone下來的是空倉庫)。wx代碼托管在github上,wx社區也在這個倉庫上開發的,更透明一些,wx的開發也很活躍。看Qt的官方網站,一直在淡化開源這件事,只是在極力推薦大家使用。

2、wx目前仍然可以看作單純的界面組件,而Qt不是。Qt可以看作操作系統所有API的抽象層,還額外附帶了很多其它基礎庫,目的是為c++提供跨平台的全方位開發庫,[https://www.qt.io/features]。這個頁面還可以看Qt那個組件用的什么授權協議。使用LGPL協議發布的部分足夠一般化應用了。Qt的安裝包可以安裝所有的組件,很可能用順手了就侵犯了Qt的商業授權。

3、開發工具方面Qt勝過很多,前面那個features頁面也可以看到三個官方提供的工具。wx的開發工具也不少,wxSmith,wxGlade,wxCrafter和wxFormBuilder。wxFormBuilder能生成python和c++的代碼。wxFormBuilder還是開源的。

4、架構各有優勢,Qt的接口齊全,wx精巧。有界面開發經驗的人能想到的接口Qt都提供了,也就是說幾乎不用學,直接上手用。wx作為單純的界面工具,開發工具生成代碼后直接填充業務代碼就可以了,也沒難度。架構上最關鍵的區域別在於,Qt提供的信號和槽機制是對C++的擴展,需要qmake解析qt代碼生成標注c++代碼再編譯。我認為這里沒有必要的,額外帶來巨多復雜度,到目前qmake也有很多bug(c++的語法有多復雜不用多說了吧)。總有人認為信號和槽是Qt非常厲害的優勢,但是我認為信號和槽是Qt架構上最大的缺陷。

5、bug方面,都多。一開始選擇用Qt做這個簡單的Gis軟件[https://github.com/tgis-top/tGis],用的是Widgets組件,試了很多個Qt發布版本才找到一個停靠窗口沒有bug的。目前Qt開源版本沒有了長期支持(LTS),在5.9上遇到bug,要么自己改代碼,要么買商業授權,要么升級到5.10。

做選擇的一定要根據業務需求和發展前景來看,可以說絕大多數場景選擇wx和選擇qt沒有區別,極少數wx無法滿足的情況可能需要qt。其實很多軟件的生命周期是非常短的,那個順手用那個,完全不用在意是用wx還是用qt。qt的宣傳到位一些,會的人多,一般情況下選擇qt不會有啥差子。絕大多數人都不會遇到需要自己改qt代碼的情況。

對於我個人來說還是准備用wx了,原因比較奇怪。
1、wx代碼量少,架構簡潔,整個代碼我自己能搞得定。那一天需要在全新的CPU上運行的話,CPU廠家提供編譯器,我自己改改代碼就能遷移過去。Qt太龐大了,尤其是那個信號和槽,要讓qmake在新平台上好好工作是非常麻煩的,即使遷移過去了,還得把開發工具也遷移過去,純粹手擼Qt代碼是不可能的。wx純手擼代碼就OK了。
2、wx可以滿足目前的應用,開發效率也不低,wx的穩定性也可以。要得就是一個GUI,不要那么一大坨。

GUI還有兩個開源選擇
[https://www.fltk.org​]
[http://www.fox-toolkit.org]
這兩個也非常輕量級,往嵌入式領域遷移也是非常方便的,將Qt用到嵌入式領域式沒啥必要的。都嵌入式了,要啥復雜UI,簡單的直接手擼,復雜的上rtliux和ucos操作系統,他們都有現成的開源UI組件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM