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

來源:互聯網
上載者:User

 

QT

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)。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.