幾種出色的C/C++ GUI函數庫的介紹(轉)

 

幾種出色的C/C++ GUI函數庫的介紹

 

幾種出色的C/C++ GUI函數庫的介紹

http://www.trolltech.com

http://www.qiliang.net/qt.html

Qt是Trolltech公司的一個多平臺的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt是完全面向對象的很容易擴展,並且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成爲全世界範圍內數千種成功的應用程序的基礎。Qt也是流行的Linux桌面環境KDE的基礎,同時它還支持Windows、Macintosh、Unix/X11等多種平臺。


GTK

http://gtkmm.sourceforge.net/

GTK是一個大名鼎鼎的C的開源GUI庫。在Linux世界中有Gnome這樣的殺手應用。而GTK就是這個庫的C++封裝版本。


WxWidgets

http://www.wxwindows.org

http://sourceforge.net/projects/wxwindows

http://i18n.linux.net.cn/others/wxWindowstut/wxTutorial.html

http://www.wxwidgets.cn/

跨平臺的GUI庫。因爲其類層次極像MFC,所以有文章介紹從MFC到WxWidgets的代碼移植以實現跨平臺的功能。通過多年的開發也是一個日趨完善的GUI庫,支持同樣不弱於前面兩個庫。並且是完全開放源代碼的。新近的C++ Builder X的GUI設計器就是基於這個庫的。


MFC

大名鼎鼎的微軟基礎類庫(Microsoft Foundation Class)。大凡學過VC++的人都應該知道這個庫。雖然從技術角度講,MFC是不大漂亮的,但是它構建於Windows API 之上,能夠使程序員的工作更容易,編程效率高,減少了大量在建立 Windows 程序時必須編寫的代碼,同時它還提供了所有一般 C++ 編程的優點,例如繼承和封裝。MFC 編寫的程序在各個版本的Windows操作系統上是可移植的,例如,在Windows 3.1下編寫的代碼可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近發展以及官方支持上日漸勢微。


Fox

http://www.fox-toolkit.org/

開放源代碼的GUI庫。作者從自己親身的開發經驗中得出了一個理想的GUI庫應該是什麼樣子的感受出發,從而開始了對這個庫的開發。有興趣的可以嘗試一下。


WTL

基於ATL的一個庫。因爲使用了大量ATL的輕量級手法,模板等技術,在代碼尺寸,以及速度優化方面做得非常到位。主要面向的使用羣體是開發COM輕量級供網絡下載的可視化控件的開發者。


FLTK

fltk偏向於開發OpenGL圖形應用程序,有界面設計器fluid,比較輕量級,所以不支持很多功能,例如Network、Print。代碼中使用下劃線。界面很像Motif,小而快是它的特點。LGPL協議,但有更多限制(好像分爲是否修改源代碼還是繼承了widget類)。依賴靜態回調函數,沒有文件對話框,不支持拖曳和剪貼板。比較起來,似乎比Fox穩定。和Motif一樣使用函數指針實現signal機制。


VCF

Visual Component Framework的框架設計非常好,不象Qt和wxWidget,它大量使用STL,比FLTK/Fox具有更加豐富的API,缺省使用Unicode,支持內置的國際化(本地化)和Undo/Redo機制,多線程和RTTI的支持也很好,可以說功能的豐富性直逼wxWidget和Qt,代碼風格也是我喜歡的類型(使用namespace和類似java的命名方式)。它的目標是象VB一樣使用C++,有Visual C++的插件支持RAD。運用模板和適當的宏實現了反射(RTTI)(不需要象Qt那樣生成metaObject),用Observer模式實現了事件系統,庫比Qt和MFC都小,大約2M左右。唯一讓我遺憾的是它還不夠成熟。


Notus

設計風格更加現代的框架,大量使用STL/Boost和模板技術,如果討厭層次結構和多態的GUI框架,這個適合你。遺憾的是該項目不夠成熟(Pre-alpha)。

更多的GUI Toolkit: http://www.atai.org/guitool/


Win32 GUI Generics

http://www.torjo.com/win32gui/index.html

這是一個純C++庫,利用了C++裏面的高級特性,避免了MFC裏面的諸多問題,由於使用的event handler機制和MFC裏面的MESSAGE MAP機制有本質的不同,所以不像MFC裏面有一打莫名其妙的宏,整個框架非常乾淨整潔,當然,編寫出來的代碼也一樣!

With surfaces, you can reinvent your UI, just like you always wanted!

The surfaces concept is nearly finished! Of course, they're in alpha stage, but just take a look at what they can do!


結論:
1. C編程使用GTK+
2. C++大型應用使用gtkmm/wxWidget,個人偏向於前者,雖然在Windows平臺gtk+的移植不是支持的很好,但快速開發必須有設計器
3. VCF如果成熟了,將是一個好選擇
4. Fox沒意思
5. FLTK適合圖形圖像程序,如果是3D應用和遊戲,一般遊戲引擎的框架內都實現了內置的GUI框架,例如Nebula的框架,非常吸引人;blender的ghost也非常棒(但是GPL)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章