2010年11月11日 星期四

C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較

http://www.cppblog.com/lingjingqiu/archive/2009/01/06/71363.html
最近用了一段時間的wxWidgets。
基本上主流的界面庫也就算用的差不多了。
這裡拿一個表格對這些界面庫做一個比較直觀的比較。

界面庫名稱 接口設計 界面編輯器 高級佈局功能 平面繪製 平台兼容性 語言支持 IDE兼容性 視圖-模型分離機制 運行時 其它
Windows Forms 接口優秀。C++下使用CLI擴展,其它語言為原生支持。 界面編輯器完整,包括佈局、屬性、消息關聯的完整設置。不可預覽。 Table Layout,Splitter Layout,Flow Layout等,Anchor和Dock機制。多分辨率界面下表現良好。 GDI+,面向對象的2D繪製接口,使用簡便。 需要.Net平台支持。WIndows或Linux(Mono,非官方支持),支持Windows CE C++/CLI, 支持.net的語言。 僅VS。 佈局和視圖方案建立在代碼中。部分組件支持Model-View架構。 需要部署對應的.net 商業協議
MFC 基於宏和虛函數,使用特殊格式註釋,使用自定義的RTTI系統。類接口設計優良。通過回調函數和虛繼承重載調用客戶代碼。 基於資源編輯器,僅能對空間基本佈局和少量屬性進行調整。不可預覽。 缺乏高級佈局功能,多分辨率需要是手工或程序中調整。 GDI及GDI封裝,可選GDI+ Windows,Windows CE C++ Only,
支持COM時可以實現Binary級別復用。
僅Visual Studio 使用資源保存控件的基本控件佈局,提供Doc-View機制和控件數據交換支持視圖分離。 需要部署MFC運行時庫。 商業協議
WTL 基於模板和虛函數。類接口類似於MFC。需要使用多重繼承。通過模板特化和回調函數與客戶代碼交互。 同MFC 同MFC 同MFC 同MFC 同MFC,對COM的支持比MFC完善很多。 Visual Studio,Windows下支持標準的C++編譯器。 使用資源文件保存空間佈局。 自由協議
wxWidget 宏,自定義RTTI。使用回調函數與用戶代碼交互。 無官方界面編輯器。可使用第三方界面編輯器。部分編輯器具有完整的所見即所得功能,且具有預覽能力。 使用Sizer實現多分辨率的佈局。功能偏弱。 wxDC等。 Windows,Linux,Unix,MacOS等 C++, .NET, Python,
Lua,
Ruby等
良好的編譯器兼容性,缺乏IDE繼承。 可以將界面屬性生成到代碼中,也可以使用XML格式保存。 wx的動態鏈接庫或靜態鏈接。 自由協議
Qt 使用宏和自定義的RTTI。使用Singal-Slot機制實現用戶代碼交互。可通過繼承實現擴展。 Qt Designer,具備完整的所見即所得編輯功能。可預覽界面。 具備完整的佈局功能。多分辨率/多平台下表現良好。 QCanvas等。 Windows,Linux,Unix,MacOS等。 C++,Python等 可集成到Eclipse和VS 使用資源文件保存界面信息。部分組件具備Model-View-Delegate架構 qt的動態鏈接庫。 開源協議+商業協議
GTK+ 使用signal-slot機制完成用戶代碼交互。 GLADE,具備所見即所得的界面編輯功能 Layout Containers,具備較完整的佈局能力。 GTK Graphics Context Windows,Linux,Unix,MacOS等。 C,C++,Python,.NET等。 (暫時未知) 使用代碼完成界面設置。部分組件具備Model-View架構。 GTK Runtime 開源協議

此外,除了WTL外,其餘各界面庫均有完整及時的文檔和手冊,因此比較項中不再指明。
回帖中有人指出國際化問題的比較,事實上MS的產品和開源對於國際化的解決方法是不同的。但是都可以比較方便的解決國際化問題。
posted on 2009-01-06 18:09 空明流轉 閱讀(3617) 評論(10)  編輯 收藏 引用



評論



# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-01-06 19:05 qtopia
Nokia 最近推了 Qt Creator,是較好的IDE環境  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-01-06 19:05 t
博主還可以增加一欄「國際化支持」  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較[未登錄] 2009-01-08 12:48 kenlistian
我覺得wxwidget是不錯的選擇。  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-01-11 20:25 www
wxwidget做簡單的還可以, 做複雜的界面,嘿嘿,那就麻煩了. win下還是MFC最爽.  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-01-19 00:49 ArenAK
有沒有哪一個是作者比較喜歡用的呢,及其原因?  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較[未登錄] 2009-01-19 16:35 六水
寫的好~  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-02-05 11:08 空明流轉
@六水
我就知道你是友情贊助的。。。  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較[未登錄] 2009-02-11 22:35 六水
這你也知道?  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-02-25 10:19 aladdina
wxWidgets的代碼質量不是很高,有一些比較初級的bug。我用過一段時間的wxWidgets,自己測試沒問題,但是用戶總會發回一些crash report。

另外,wxWidgets和Qt除了對於一些常見應用,比如窗口、DC的封裝之外,還提供了很多系統接口的封裝,比如clipboard, thread, socket等。

Qt有Qt Creator作為IDE,工程項目文件可以跨平台,另外,工程文件也可以用qmake轉成平台無關的makefile。準備最近有空試試Qt,個人覺得商業代碼質量還是要稍微好一些。

  回覆  更多評論

# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較 2009-09-18 12:09 idol
gtk 哪有 signal-slot機制,用的明明是 callbacks

沒有留言:

張貼留言