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