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的產品和開源對於國際化的解決方法是不同的。但是都可以比較方便的解決國際化問題。
評論
# re: C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方綜合比較[未登錄] 2009-01-08 12:48 kenlistian
gtk 哪有 signal-slot機制,用的明明是 callbacks
沒有留言:
張貼留言