GTK , Qt, wxWidgets 比較簡評

2021-05-27 16:02:33 字數 2576 閱讀 9884

gtk+, qt, wxwidgets 比較簡評

qtmfc

windowsosc

//這位台灣的高手把gtk+, qt, wxwidgets比較分析得相當到位。明顯,mfc注定將淡出江湖了。

[心得] 知名 gui lib 簡評 (gtk+, qt, wxwidgets)

之前因為把 mfc 痛罵了一頓,有網友在詢問其他 gui toolkit

純屬個人主觀意見,不是業界人士,所知有限,望先進前輩不吝指正或補充

先講 gtk+

gtk+ 主要用在 x window 上,整個設計的架構和許多概念和 mfc 以及一般 windows 上

的程式開發大異其趣,入門門檻較高,而且最主要的特色是,他用不具有物件功能的純

"c" 語言,模擬物件導向。 所以寫起來比較複雜艱澀,而且充滿大量巨集,使用和除錯

都不是很容易,但優點則是可以用 c,不需 c++,如果和 win32 sdk 比較,不會難學

多少,缺點是不易上手使用,而且檔案比較缺,架構又非常複雜,且提供的東西比起其他

無所不包的 library,是簡陋了一點,函式命名又臭又長。 對於簡單的程式,gtk+ 會

顯得太複雜,但是當你開始想擴充其他 library 也都沒提供的高階功能,就會開始讚嘆

gtk+ 的架構嚴謹,還有超乎想像的高度彈性。 同樣的東西要用 mfc 來做反而會要人命

並且多國語言的支援良好,內部也全面使用 utf-8,相容性好,又是 unicode

能夠習慣的話,gtk+ 值得推薦,但沒有很建議學,畢竟不好學,要用到熟會需要比

較久,而且那樣很多 c++ 的功能會用不到。 gtk+ 有 c++ 版本叫做 gtk--,沒用過

但看檔案覺得,並沒有比 gtk+ 簡單到**去。 因為 gtk+ 本來就是物件導向,所以

即使換了 c++ 語言,寫起來架構還是差不多的。 另外,gtk+ 有 windows 版本,但缺

點是,執行緩慢,不穩定,而且介面是使用 gtk+ 自己的,不是使用 windows 內建的

"native" 原生圖形介面,看起來會不太習慣。 mac os x 下可用 x11 來執行 gtk+

但那樣出來的程式是長得像 unix 程式,而不是美美的 os x aqua 外觀

wxwidgets 和 mfc 最接近,命名習慣或架構都高度相似,會 mfc 幾乎不用重新學習

有十餘年歷史,此外,他的物件封裝比 mfc 要好,提供的功能也多上太多,又跨平台

一般知名的 mfc 程式都會選擇用 wxwidgets 改寫,來快速移植原程式到其他平台

例如 emule 用 wxwidgets 移植出 amule, xmule, 還在開發中的 filezilla 3...等

而他最主要的特色是,他是"跨平台"的 "native" gui toolkit,在各種平台上都可寫出

使用該平台內建 native 原生圖形介面的程式。 在 windows 上就長得跟其他 windows

程式一樣,在 linux 下就使用 gtk+ 的圖形介面,在 mac os x 下就可以使用華麗的

aqua 外觀風格,這點是非常強悍。 不像 gtk+ 到其他系統都還是只能用 gtk+ 自己的

缺點是,中文支援在有些地方會出問題,例如剪貼簿的操作。 得自己 patch

但仍然相當推薦,即使是個龐大的 library,效能依舊不會太差,尤其在 windows 上

執行速度並不輸 mfc,與其學 mfc,不如學 wxwidgets。

qt 的功能,應該是這三者加上 mfc 之中最強大的,檔案也很完整,又有 rad 工具

可以輔助開發,並且有商業公司做強力後盾。不但有 windows/x window/mac 版本,

甚至還有嵌入式系統可用的版本,穩定性還不錯,物件封裝也算良好,資源比 gtk+ 或

wxwidgets 多得非常多,而且發行公司提供了相當多範例,算是一家以開放原始碼成功

營利的模範公司。 知名的 kde 整個是用他開發,證明了他的穩定性和強大功能。

缺點是如果你用他開發非 gpl 開放程式碼的軟體,必須以極昂貴的金額,購買商業

版本。 而他的圖形介面並不完全是 "native gui",只是透過 theme 去模擬系統上的

標準 gui,所以看起來很像,卻會有些地方可以明顯看出破綻。 執行速度緩慢還有過於

龐大則是另乙個問題。 雖然封裝得很良好檔案也齊全,並不代表他就很容易學

還有乙個嚴重問題是,他寫的不是標準 c++,他使用的 signal/slot 機制必須透過 qt

提供的 preprocessor 處理過才可以轉送給編譯器,這部份可能被限定用 qmake,算是

乙個可惜的地方,不過瑕不掩瑜,還是很推薦。忘了說,他內部也是 unicode,

多國語言沒問題。

以上三套只是簡單介紹,其中 qt 的程式我沒有實際完整開發過,但明顯的三套都遠遠比

只能在 windows 上用,功能少 bug 多難學難用幾乎無多國語言支援的 mfc 要強。

三套可跨平台的 library 大家可自行選擇,只能用在 windows 的 mfc 就不用考慮了

wxwidgets 內帶 wxodbc,可惜 wxd 目前並沒有包裝它。

總結:wxwidgets效能及ui最好,qt最大最全,gtk+架構及擴充套件性最好 

GTK , Qt, wxWidgets比較分析

這位 來自台灣的朋友把gtk qt,wxwidgets比較分析得相當到位。很明顯的,mfc注定將淡出江湖了。下面就是幾個跨平台庫的橫向比較。1.先講gtk gtk 主要用在x window 上,整個設計的架構和許多概念和mfc 以及一般windows 上的程式開發大異其趣,入門門檻較高,而且最主要的...

GTK , Qt, wxWidgets 比較簡評

這位 來自台灣的朋友把gtk qt,wxwidgets比較分析得相當到位。很明顯的,mfc注定將淡出江湖了。下面就是幾個跨平台庫的橫向比較。1.先講gtk gtk 主要用在x window 上,整個設計的架構和許多概念和mfc 以及一般windows 上的程式開發大異其趣,入門門檻較高,而且最主要的...

跟自己比, 而不是跟別人比!

生活中,我們總不自覺的把目光放在別人身上,放在別人取得的成績上,看到比自己優秀的,或豔炫不已,或自慚形穢,或心生妒忌。我們很少去思考別人比自己優秀在 自己的不足在 我們確實應該積極的去跟別人比較,但不是對比成績如何,不是對別工作好壞,更不是對比誰強誰弱,而是去關注更深層次的東西。別人之所以比你優秀,...