Windows Forms、MFC、WTL、WxWidgets、Qt、GTK综合比较
圖形界面庫Windows Forms、 MFC、WTL、 WxWidgets、Qt、GTK 綜合比較見下表:
總結(jié):
GTK+主要用在X Window上,整個設(shè)計的架構(gòu)和許多概念和MFC以及一般 Windows 上的程序開發(fā)大異其趣,入門門檻較高,而且最主要的特色是,它用不具有對象功能的純C 語言,模擬面向?qū)ο蟆K詫懫饋肀容^復(fù)雜艱澀,而且充滿大量巨集,使用和除錯都不是很容易,但優(yōu)點則是可以用C,不需C++,如果和Win32 SDK比較,不會難學(xué)多少,缺點是不易上手使用,而且文件比較缺,架構(gòu)又非常復(fù)雜,且提供的東西比起其它無所不包的 library,是簡陋了一點,函數(shù)命名又臭又長。
對于簡單的程序,GTK+會顯得太復(fù)雜,但是當你開始想擴充其它library也都沒提供的進階功能,就會開始贊嘆GTK+ 的架構(gòu)嚴謹,還有超乎想像的高度彈性。同樣的東西要用 MFC來做反而會要人命,并且多國語言的支持良好,內(nèi)部也全面使用UTF-8,相容性好,要是unicode能夠習(xí)慣的話,GTK+值得推薦,但不建議學(xué),畢竟不好學(xué),要用到熟會需要比較久,而且那樣很多C++的功能會用不到。GTK+有C++版本叫做GTK–,沒用過但看文件覺得,并沒有比gtk+簡單到哪里去。 因為 gtk+本來就是面向?qū)ο?#xff0c;所以即使換了c++ 語言,寫起來架構(gòu)還是差不多的。
另外,gtk+有Windows 版本,但缺點是,執(zhí)行緩慢,不穩(wěn)定,而且界面是使用gtk+自己的,不是使用 Windows 內(nèi)建的Native原生圖形界面,看起來會不太習(xí)慣。 Mac OS X 下可用 X11 來執(zhí)行g(shù)tk+,但那樣出來的程式是長得像 UNIX 程序,而不是美美的OS X Aqua外觀。
wxWidgets和MFC最接近,已有十余年歷史,命名習(xí)慣或架構(gòu)都高度相似,會MFC幾乎不用重新學(xué)習(xí)。此外,它的物件封裝比MFC要好,提供的功能也多上太多,又跨平臺。一般知名的MFC程式都會選擇用wxWidgets改寫,來快速移植原程式到其它平臺,例如 eMule用wxWidgets移植出aMule,xMule, 還有在開發(fā)中的Filezilla 3…等。而它最主要的特色是,它是跨平臺的Native GUI toolkit,在各種平臺上都可寫出使用該平臺內(nèi)建Native原生圖形界面的程式。在Windows 上就長得跟其它Windows程式一樣,在 Linux 下就使用 gtk+的圖形介面,在 Mac OS X 下就可以使用華麗的Aqua 外觀風(fēng)格,這點是非常強悍。 不像gtk+到其它系統(tǒng)都還是只能用gtk+自己,缺點是,中文支持在有些地方會出問題,例如剪貼簿的操作,得自己patch,但仍然相當推薦,即使是個龐大的library,效能依舊不會太差,尤其在 Windows 上執(zhí)行速度并不輸 MFC,與其學(xué)MFC,不如學(xué)wxWidgets。
Qt的功能,應(yīng)該是這三者加上MFC之中最強大的,文件也很完整,又有 RAD 工具可以輔助開發(fā),并且有商業(yè)公司做強力后盾。不但有Windows/X Window/Mac版本,甚至還有嵌入式系統(tǒng)可用的版本,穩(wěn)定性還不錯,物件封裝也算良好,資源比 GTK+ 或wxWidgets多得非常多,而且發(fā)行公司提供了相當多范例,算是一家以開放原始碼成功營利的模范公司。 知名的KDE整個是用它開發(fā),證明了它的穩(wěn)定性和強大功能。缺點是如果你用它開發(fā)非 GPL 開放程序碼的軟件,必須以極昂貴的金額購買商業(yè)版本。而它的圖形介面并不完全是 Native GUI,只是透過theme 去模擬系統(tǒng)上的標準 GUI,所以看起來很像,卻會有些地方可以明顯看出破綻。執(zhí)行速度緩慢還有過于龐大則是另一個問題。
雖然封裝得很好文件也齊全,并不代表它就很容易學(xué)。還有一個嚴重問題是,它寫的不是標準C++,它使用的signal/slot機制必須透過Qt提供的preprocessor,處理過才可以轉(zhuǎn)送給編譯器,這部份可能被限定用qmake,算是一個可惜的地方,不過瑕不掩瑜,還是很推薦。忘了說,它內(nèi)部也是unicode,多國語言沒問題。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Windows Forms、MFC、WTL、WxWidgets、Qt、GTK综合比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js和jquery书籍
- 下一篇: 数据结构+算法 学习计划与资源