wxWidgets和QT之間的選擇
跨平臺的C++ GUI工具庫很多,可是應用廣泛的也就那么幾個,Qt、wxWidgets便是其中的翹楚。
這里把GTK+排除在外,以C實現面向對象,上手相當困難,而且Windows平臺下執行相當慢且不穩定。
Qt和wxWidgets各有各的優點,也各有各的缺點,各有各的適合應用點。
工作環境和愛好限制,個人曾經分別使用過Qt和wxWidgets,
到現在,就個人而言,選擇在一般程序方向采用wxWidgets,在手機應用程序方向采用Qt。
先說版權:
Qt,是芬蘭的TrollTech公司研發的,現在屬于Nokia,一直奉行的是雙LICENSE策略,一個是商業版,一個是免費版:
商業版的LICENSE就不說了,免費版的LICENSE,4.5版本之前一直采用GPL,意味著采用Qt的程序要么是商業軟件,要么就是GPL軟件,
這就造成了雖然出了個著名的KDE,可惜應用范圍還是受限,否則的話,應用應該更廣闊點;
不過還好,Nokia收購了之后意識到這個問題,4.5版本之后采用了LGPL,其他開發人員可以發布基于免費Qt庫連接的商業軟件了。
wxWidgets,一直奉行的是LGPL LICENSE。
再評評各自的優缺點:
Qt,一直以來開發公司作為商業公司進行運作,以客戶需求為目標,提供了一系列完整的文檔和RAD工具,并提供最為完整的平臺支持;
對開發人員而言,Qt庫本身,也是所有的GUI工具庫中最為面向對象化的,同時也是最為穩定的。
羅列一下:
Qt的優點:
1. 支持的平臺最多
2. 商業化支持
3. 完整的文檔和RAD工具
4. 最為面向對象
5. 世界上最為成功的手機廠商支撐,對于移動終端的支持最為完善
Qt的缺點:
1. 使用的是非標準C++
2. 每個平臺不是"Native GUI"
3. 過于龐大且運行緩慢
4. 與其它庫不是很兼容(主要是STL之類的兼容問題)
5. 基本只能使用特定的qmake工具(其它工具經過良好的修改也可以,不過相當于重新編寫一個qmake,是否值得)
wxWidgets,一直以來的LGPL發布,相當開放,積累了相當一部分研究用戶,與現有各類工具庫無縫連接地非常好;
同時可惜的是沒有非常強大的正規商業化運作,可靠性、資源豐富性遠比不上Qt。
還是羅列一下:
wxWidgets的優點:
1. 開放,對于各類第三方庫的良好兼容(TAO工具中的Naming_Service Viewer就是采用wxWidgets的)
2. 支持各平臺的"Native GUI"
3. 雖然有龐大的庫,運行效果極為顯著
4. 對各類現有工具的支持(筆者就采用MPC一站式產生所有項目的編譯工程)
5. 偏MFC,對于Windows平臺MFC程序的跨平臺遷移,具有天然的優勢
6. XRC,則提供了代碼和設計分離的便利,程序員專注整體開發,UI設計群體則提供運行期界面、多語言版本支持功能等
wxWidgets的缺點:
1. 由于是偏MFC,則面向對象封裝做得不是非常好
2. 相對缺乏的文檔、資源
3. 缺乏很好的商業化支持,如果商業軟件出問題需要支持,稍微麻煩點
總之:
在采用第三方工具庫的復雜PC應用環境,有一定的底子,wxWidgets是不二的選擇
在只需采用Qt單一工具庫的應用環境,Qt是個不錯的選擇;特別是類似于手機這種嵌入式設備環境,由于Nokia的加入,Qt更值得一用。