wxWidgets與其餘工具庫的比較(下)


原創做品,容許轉載,轉載時請務必以超連接形式標明文章  原始出處 、做者信息和本聲明。不然將追究法律責任。html

GTK+
 
    ● GTK+的網站: www.gtk.org
    ● GTK+本來是Gimp的一個工具庫,是在LGPL協議下發布的Unix系統GUI庫;
    ● GTK+已經被移植到Windows,VMS以及其餘的系統上面(在MacOS X上面如今能夠經過蘋果的X11應用程序實現,其本地版本正在開發之中),使用相同的API。可是,GTK+的設計初衷是Unix,多平臺的開發是後來才加入的;
    ● GTK+是GNOME用戶界面的原始構建庫;
    ● 不一樣於wxWidgets,GTK+支持C語言(一樣,GTK+也有一個C++的封裝版本GTKMM, http://www.gtkmm.org);
    ● GTK+的API被很好的設計過,包含了安全類型轉換和其餘的一些機制,可是C++語言已經內建了這些;
    ● GTK+構建在glib庫之上,這是一個通用庫(在某些方面相似於C++的STL,它提供了一些數據結構,以及一些幫助內存管理的函數等);
    ● 在不一樣平臺具備相對一致的界面,除了Windows XP,在XP系統中,GTK+嘗試使用Wimp外觀(基於UxTheme)來模擬Windows本地界面,得到了必定的成功。可是,它依然是一個Unix庫;
    ● 既然wxWidgets在Unix上使用GTK(或是GTK2),也就沒有什麼理由在wxWidgets之上構建跨平臺的C++程序了。
 
Kylix
 
    ● Kylix是Borland/Inprise的一個不成功的產品,因此很難說它還會繼續被支持多久;
    ● Kylix基於Qt構建;
    ● Kylix僅支持爲數很少的平臺;
    ● Kylix的IDE使用了很多於三個庫,而且很不專業。
 
Lazarus
 
    ● Lazarus是一個跨平臺的開源RAD IDE,也是一個編寫GUI程序的庫;
    ● Lazarus不少地方與Borland Delphi兼容,相同的代碼能夠被這兩個編譯器編譯;
    ● Lazarus有爲本地使用或者客戶端/服務器的數據庫應用的數據展現組件;
    ● Lazarus僅支持Object Pascal;
    ● 工做方式相似於wxWidgets,支持不少底層的工具集:gtk1,gtk2,win32api,qt,carbon和winCEapi;
    ● 底層的免費Pascal編譯器支持不少如今仍在使用的操做系統和架構;
    ● 如今它支持的平臺比wxWidgets少。
 
Ultimate++
 
    ● Ultimate++僅支持Windows和Linux,不支持MaxOS;
    ● 在 http://upp.sourceforge.net/www$uppweb$vswx$en-us.html的對比展現了一個簡單的例子,可是這並不能說明這個庫如何很好的開發更大的應用程序。
 
Notus
 
    ● Notus網站: http://sourceforge.net/projects/notus
    ● 實際上存在wxWidgets ;) (豆子:原文是wxWidgets actually exists,這多是說還有更好的wxWidgets);
    ● Notus彷佛是要更多地使用標準庫和現代C++概念,例如遍歷器、模板、命名空間等等(相比之下,wxWidgets更多的是使用了非標準的方式);並 且它更多地是借鑑了Boost的設計理念(你能夠把它認爲是一個好的或者很差的事情),它和Boost的其餘的庫在一塊兒工做得很好。固然,既然它並不存 在,這是否是真的還得要時間的檢驗。(豆子:看看Notus的站點,好像這是庫是把泛型的概念帶入到GUI編程裏面)
 
MFC
 
    ● MFC僅僅可以在Windows上無償使用:
        ○ Visaul C++跨平臺版本有一個maxintosh版(至少要800美圓),可是自從4.1版本的編譯器就不支持了;
        ○ 也有一些Unix的模仿,如MainWin,至關的昂貴,須要運行時協議,而且聽說有一些有問題的支持;
    ● 若是一個程序使用wxWidgets或者MFC構建,而且源代碼是開放的,那麼EULA(豆子:最終用戶許可協議)是不能約束wxWidgets的;
    ● MFC的執行程序比wxWidgets小(基本上是靠編譯器實現體積縮小的);
    ● MFC擁有不少優秀的商業組件;
    ● 有人說,wxWidgets的事件表(event tables)要比MFC的消息映射(message map)好;
    ● wxWidgets的類層次結構更多合理,而MFC在頂層類名顯得不那麼一致性;
    ● wxWidgets提供了大量的相關的方便的工具類,而MFC提供了更多的窗口相關的類;
    ● 同.NET不一樣,MFC不會遷移到.NET平臺;另外一方面,wxWidgets已經有了初步的.NET版本;
    ● MFC提供了更多的組件,尤爲是有關數據的控件;
    ● 有些地方使用wxWidgets更加簡單一些,例如特定類型的窗口(如老是在最上方的窗口等),另外一些地方使用MFC會更方便,日期選擇工具條;
    ● 或許使用MFC最重要的一點是MSVC,這個IDE自己;
    ● 參見<a title="WxWidgets" for="" mfc="" programmers"="" href="http://wiki.wxwidgets.org/WxWidgets_For_MFC_Programmers" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(67, 67, 67); text-decoration: none; ">WxWidgets For MFC Programmers瞭解更多區別。
   
Mozilla Framework
 
    ● 在Mozilla程序中須要使用JavaScript、XUL和C++;而wxWidgets只使用C++;
    ● 在Mozilla中使用C++(XPCOM)至關困難;在wxWidgets中使用C++就簡單得多。
 
Tk
 
    ● Tk又稱爲:Tcl/Tk,Perl/Tk;Python/Tkinter;
    ● 古老的API,可是實現了基礎的功能。不少擴展提供了新的組件:著名的 BWidgets Tcl/Tk擴展提供了純Tcl編寫的 megawwidgets
    ● 沒有GridView~ListView,可是有一個簡單的list;
    ● ComboBox是一種按鈕;
    ● 默認命令是雙擊,但若是你但願「單擊」或其餘事件,那也是支持的,不過你會很難發現它們;
    ● Python將這個庫選爲默認的,可是一些發行版(如Pardus)並無默認包含;
    ● 從一個組件得到返回值是經過StringVar、IntegrVar和DoubleVar類,這很使人困惑;
    ● 提供MaxOS X上面的本地外觀(好久以來就是如此),使用Tile擴展實現Windows XP的本地風格,其餘狀況下是Win9x的風格;
    ● 在X11下並不能工做得很好。事實上,它看起來有點像Motif :-( ,看一下Tile擴展,它的目標是讓Tk在X11下得到新生;
    ● Tk是工具命令行語言(豆子:原文是Tool Command Language)的一個擴展。這種語言是一個強大的跨平臺腳本語言。可是不得不認可,Tcl的學習曲線很高,它是一種和C/C++徹底不一樣的語言;
    ● 你能夠把完整的Tcl/Tk應用程序包裝成 一個二進制文件,一個獨立的Starpack,或者說是一個使用一種小巧的腳本解釋器Tclkit運行的Starkit。發佈就是這麼簡單。
 
VCF
 
    ● VCF網站: http://vcf-online.org
    ● 清晰的OO設計;
    ● 在Windows是成熟的,部分支持MaxOS X和Linux;
    ● BSD協議。
 
WideStudio
   
    ● WideStudio網站: http://www.widestudio.org
    ● WideStudio使用它本身的組件;
    ● WideStudio的安裝包含在MinGW和gcc之中(不是可選的);
    ● WideStudio有一個IDE/設計器;
    ● 它的IDE/設計器有Eclipse插件版本(參見 http://www.eclipse.org/dsdp/nab/);
    ● WideStudio沒有控件交互的鍵盤導航;
    ● WideStudio的容器類不容許使用名字引用(如myWindow("labelCaption")->Test);
    ● WideStudio的庫的總大小小於10M(2008-01-25),小型的應用程序的發行版小於4M。
 
什麼狀況下不該該使用wxWidgets?
 
    ● wxWidgets缺乏建立漂亮的表格、圖表的商業GUI組件。參見 wxCode
    ● 不支持主題(區別於在底層使用主題的工具庫),除非你使用wxUniversal或者 wxSkin
    ● wxX11相比於其餘的工具庫只是一個子集,而且不穩定。你應當使用wxGTK,這個實現基於GTK構建,而不是直接在X11上面。wxX11更適合於沒有GTK的嵌入式設備;
    ● wxWidgets試圖支持大量的特性,所以,有些不多用到的組件不如常用的組件穩定。就像使用任何開源庫同樣,大量的測試是最佳的解決方案;
    ● wxWidgets沒有提供任何平臺的二進制發佈。你不得不本身編譯wxWidgets。 wxpack提供了Windows平臺上的wxWidgets的二進制版本,可是你須要下面幾百兆的開發包;
    ● 使用本地組件使得相同的代碼在不一樣平臺表現有所不一樣,而且可能有一些平臺相關的bugs。
 
==================================================
 
如今終於將這篇文章翻譯完了。不少翻譯不當的敬請諒解!雖然這是篇發佈在wxWidgets上面的Wiki,可是我以爲寫得還算中肯,所以是有必定的借鑑意義的。
 
這裏列出了不少庫,或許一些如今已經中止開發了,至少也算是見證一下C++ GUI庫曾經的百家爭嗎、百花齊放的場面吧!呵呵…
相關文章
相關標籤/搜索