(聲明:Alberl以后說到開源庫,一般都是指著名的、或者不著名但維護至少3年以上的。那些把代碼一扔就沒下文的,Alberl不稱之為開源庫,只稱為開源代碼。這里並不是貶低,像Alberl前面那個系列的教程《
2013 duilib入門簡明教程
》,還有本系列教程,還有前面介紹的CodeProject,基本上都是代碼往上面一扔,就不用再怎么維護的。這些都稱之為開源代碼,其實開源代碼對新手的幫助更大,因為很簡明的說明了代碼用法~O(∩_∩)O~)
前面兩個教程已經對制作界面的幾種方式
進行了比較,
權威界面庫已經比較過了,那么接下來就是上一個教程介紹的那三種方式。
而上一個教程已經說的很明確了,用那三種
必須得依靠開源庫!(或者像騰訊這樣有實力的公司自己開發)
C++相對於Java和C#而言,確實有點悲催。C#有強大的微軟做后盾,Java也是被Sun養大,而C和C++由貝爾實驗室發明,畢竟C++只是貝爾實驗室中很普通的一項發明,並且C++的最大受益者也不是貝爾實驗室,從C++ 03 到C++ 2011隔了8年時間,顯然沒有Java和C#及時,畢竟他們都是公司運作,並且是公司中很重要的成員。而C++的推動就只能靠開源社區啦,boost是最大的貢獻者啦,然后就是linux社區、Apache等公司,再接着就是各種開源庫的作者啦。
沒有公司的運作,顯然很多方面都比不上Java和C#。比如C#有個很著名的
NOPI,操作Office毫無壓力,而C++就只有幾個沒人維護的庫,還不如用微軟的COM接口。java有個很著名的JFreeChart,顯示各種曲線
圖表都夠了,但C++就沒有,只有Codeproject上面有幾個,不過還是達不到要求,但是商業的曲線庫老板又不會買,就苦了我等碼農了。Office還好,微軟的接口一向好用,在現有開源代碼的基礎上,花個把星期就可以封裝個很不錯的庫。而曲線圖表這個東東不像按鈕控件,真的很難做,難做的不是畫圖,而是各種曲線的管理,和各種效果功能的實現,細節問題一大堆,而C#和Java卻不會遇到這種常用控件還要開發的問題。 這只是其中的兩個例子而已,Alberl平時查資料的時候,也發現了C++的很多不給力(主要體現在界面方向,邏輯方向倒是非常給力),因為C++本來就只是邏輯處理,連多線程都沒有,界面就更別提了,而C#和Java都是一整套開發框架,所以非常省事。注意啦,這里不是勸大家不要用C++,而是說C++真的需要做很多事情。
對C++開源庫的牢騷完畢^_^
還記得第二個教程給出了數十款播放器的對比嗎? 同樣有NB的老外給C++的界面庫也做了詳細對比,同樣也有上百種~O(∩_∩)O~
下面請看正文(格式支持不好,推薦看原文。可能很少小伙伴會看完,不過最后面有Alberl的分析哦~):
The GUI Toolkit, Framework Page
Note to people using the geocities.com site: if you see the site down due to bandwidth limit being exceeded, please consider using the other site listed below
GUI Toolkit developers: please let me know of news/changes to your projects/products so I can update this page accordingly.
This page resides in http://www.geocities.com/SiliconValley/Vista/7184/guitool.html and
http://www.atai.org/guitool/
Page created April 17, 1997 (86). recent changes
Thanks to Alejandro de Garate for improving the layout of this page .© Copyright 1997-2003, 2005 ( ROC Years 86-92, 94,96), by Li-Cheng (Andy) Tai. See copyright for details.
Last updated May 13, 2007 (96)
GPL: GNU General Public LicenseFree toolkits: C/C++ Java other languages | commercial toolkits: C/C++ Java | Related links | copyright
LGPL:GNU Library/Lesser General Public License
PD: Public Domain
BSD: BSD or X11-like license (commonly allowing you todo whatever you want provided the original copyright notice is kept and credit given)
Art: The Perl Artistic License
MPL: Mozilla Public License
Free Toolkits (including both Free (in the GNU sense) and no-cost ones)
C/C++ oriented
(unless explicit stated with "C API", all toolkits in this table provide APIs in C++)Name | Comments | license | Unix X11+ | UnixX11+Motif | MS Win 95/98 | MS Win NT/2000/ XP/Vista |
MS Win 3.1 | OS/2 PM | MacOS | NextStepOpenStep MacOS X |
other platforms |
---|---|---|---|---|---|---|---|---|---|---|---|
|
in C++ see interesting development methodology for more info Unix version built on gtk+ |
|
|
|
|
y |
|
||||
|
|
|
|
||||||||
aedGUI |
a cross-plataform, easy-to-use, non-intrusive C++ GUI library that runs on top of SDL |
LGPL | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (via SDL) | (via SDL) |
Agar |
a high-level graphical C application framework aimed primarly at 2D/3D games and simulations. Agar applications are portable to a variety of platforms thanks to theSDL.support for SDL 2D and OpenGLrendering. Thread safe | BSD |
y (via SDL) | (viaSDL) | y (via SDL) | y (via SDL) | (viaSDL) | (via SDL) | y (viaSDL) | y (via SDL) | other platforms supported by SDL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
OpenAmulet ![]() |
|
|
|
|
|
|
|||||
|
|
|
|
||||||||
|
Gtk--. |
|
|
||||||||
Fresco (new) |
Berlin renamed to Fresco in 2002, taking on the name of the old GUI toolkit Fresco |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLX![]() |
(Component Library for Cross-platform)Cross-platform library for, and part of, Delphi,Kylix and CBuilder - Based on top of Qt, Linux only |
GPL | y | ||||||||
![]() |
|
|
|
|
|
|
|
|
|
|
|
C++/Tk, cpptk |
C++ interface to the Tk library tries to provide not only the Tk functionality, but also its wayof writing code, based on the syntax used in Tcl/Tk. | BSD | y | y | y | y(?) | |||||
CroPL |
a C++ application framework and utility library for single-source Mac/Windows applications |
non-profit use only |
|
|
y |
y |
|
|
y |
y |
|
|
|
|
|||||||||
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|||||||
![]() |
|
|
|
||||||||
![]() |
|
|
|
|
|
y |
|
y | |||
![]() |
|
|
|
|
|
|
|
||||
also see Berlin as the new Fresco |
( another info page) development stopped, succeeded by Berlin |
|
|
|
|
|
|||||
|
|
|
|
||||||||
|
|
|
|
|
|
||||||
|
|
|
|||||||||
![]() |
|
|
|
|
|
|
|
|
|
|
|
![]() |
|
|
|
|
|
|
|
|
|
|
|
![]() |
|
|
|
||||||||
![]() |
|
|
|
||||||||
|
|
|
|
||||||||
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
||||
![]() |
(ftp) (mailing list) ( gtk--,a C++ wrapper)(Gtkkitand Gtoolkit , ObjectC wrappers) (wxGTK, WxWindows port to gtk+ (C++ API)) (gtkv,Vport to gtk+ (C++ API)) (VDK , SDPGTK, Inti, other C++ wrappers) glade, grad, epingle,UI builders for gtk+ and gtk-- libglade ![]() |
|
|
|
|
in progress |
|
||||
![]() gnomemm (gnome--) |
related: gnomemm, c++ bindings for GNOME |
|
|
||||||||
GuiToolkit |
"a class set which allow You to build applications with new Microsoft interface style .It includes more than 50 of MFC classes" |
no cost use |
|
|
y |
y |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
||||||||
ivtools ![]() |
Interviews (ftp) was an early advanced toolkit whose development stopped around 1993. conceptual successor is Fresco. |
|
|
||||||||
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
||||||||
|
JAVA and C, provides the JAVA AWT Toolkit to non object oriented Languages like C, Fortran, Pascal, Ada and even Basic |
|
|
|
|
|
|||||
JUCE![]() |
an all-encompassing C++ class library for developing cross-platform applications | GPL | y | y | y | ||||||
|
|
|
|
|
|||||||
![]() |
|
|
|
||||||||
![]() |
|
|
|
||||||||
|
"a small enough library that one person can understand it all." |
|
|
|
|
|
|
||||
|
|
|
|
||||||||
libgx |
a lightweight, non-intrusive, public-domain C++ widget library for writing X11 applications | public domain |
y |
||||||||
|
|
|
|
||||||||
|
|
Art(?) |
|
||||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
||||||||
MacZoop |
C++ API. Framework on top of Carbon API. |
MacZoop license |
y |
y |
|||||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|||||
![]() |
|
|
|
|
|
|
|
|
|
|
|
![]() |
|
|
|
|
|
|
|
|
|
|
|
OpenMotif ![]() |
|
|
|
|
|||||||
|
|
|
|
||||||||
|
|
|
|
||||||||
NGL, NUI![]() |
LGPL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
![]() |
|
|
|
|
|
|
|||||
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
PicoGUI |
"a new Graphical User Interface architecture designed with embedded systems in mind. ... includes low-level graphics and input, widgets, themeing, layout, font rendering, network transparency, and debugging features." Also can be an alternative windowing system (when running on framebuffers) | GPL/LGPL |
|
y | y |
|
|
Linux frame buffer, numerous embedded devices (see this list) |
|||
|
|
|
|
|
|||||||
![]() |
KDevelop , EBuilder, Qt Architect ,QtDesigner and QtEZ, UI buildersfor Qt Qwt, additional GUI components for Qt for scientific appl (see this link for info on integration withMotif) |
QPL( Qt 2.x series, X11 version) QPL and GPL(Qt 2.2 and later, X11 version) (Windows and MacOS X) (GPLed) |
|
|
|
y(GPLed) |
|
||||
SmartWin | a small sized, extremely type safe, no overhead what so ever, fully template based C++ GUI library for Windows API (formerly known as Win 32 API). | GPL plus additional permissions | y (?) | y | |||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Taronja |
information in Spanish... no English info available. |
BSD |
y (?) |
? |
|||||||
|
|
|
|
|
|
|
|
y | |||
|
|
|
|
||||||||
Trixul |
Trixul is an XML and JavaScript GUI toolkit that supports MacOS X, Linux, and Windows environments directly via Cocoa, Gtk+, and .NET native implementations. JavaScript code can call C++ directly. | BSD |
y (on top ofgtk+) |
|
|
y (on top of .Net Forms) |
|
|
|
y |
|
Willows Toolkit |
|
|
|
|
|
|
|
|
|
|
|
Ultimate++ | C++ toolkit that "achieves significant reduction of code complexity for most applications when compared to other development platforms" | BSD | y | y | y | ||||||
![]() |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|||||||
|
|
|
|
|
|||||||
VCF![]() |
Visual Component Framework, "a simple to use cross platform GUI framework, with many of the advanced design features of Java and Java's Swing, and Borland's Visual Component Library.Also provides advanced RTTI/Introspection features common in languages like Object Pascal, Objective C, Smalltalk, and Java, but not typically found in C++" | BSD |
in development |
|
y |
y |
|
|
|
in development |
|
|
The Virtual X Class Library. API strongly linked to the Win32 API. | LGPL | y |
|
|
|
|||||
|
|
|
|
|
|||||||
|
|
|
|
|
|||||||
wGui |
a simple, platform independent dialog manager library usingSDL |
LGPL | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (via SDL) | (via SDL) |
![]() |
is a modern framework that takes advantage of templates, multiple inheritance, STL, and exceptions. is designed around the notionof |
|
|
|
|
|
|
|
|
||
![]() |
|
|
|
|
|
|
y | ||||
![]() |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
![]() |
( WxGTK, gtk+ port) |
LGPL ( wxxt1.6xonly) WxWidgets license (version 3.0, actually LGPL plus exceptions) |
|
|
|
|
|
|
|
|
also on top of MicroWindows, and MGL |
![]() |
|
|
|
||||||||
|
|
|
|
||||||||
|
note another toolkit has the samename |
|
|
||||||||
|
note another toolkit has the samename |
|
|
||||||||
|
|
|
|
||||||||
|
|
|
|
|
|||||||
![]() |
"Xmt++ is to provide a C++ Model-View-Controller framework implementation based on Xmt. This framework makes it easier to integrate a Motif GUI to an application and maintain design integrity." |
|
|
||||||||
|
|
|
|
|
|||||||
![]() |
standards (e.g., XML, RDF, HTML, CSS, DOM, JavaScript) and technologies (e.g., Gecko, XPConnect) to minimize platform-specific code." May built on top ofgtk+ and Xt for X11 |
|
|
|
|
|
|
|
|
y | BeOS |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|||
![]() |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||||
![]() |
framework. supports 24 platforms (including MS DOS and Unix text mode) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
|
|
|
|
||||||||
|
|
|
|
|
|
XP/Vista |
|
|
|
MacOS X |
|
to top
Java oriented
- Biss-AWT (GPL-like license)
- SAWT
- GWT (Gadget Windowing toolkit), licensed under LGPL,from DTAI Inc. (nolonger available?)
- Koala Toolkit (license)
- SubArctic,not an AWT clone but a toolkit based on advanced research (license)
- FrescoJavaport (only supports Java 1.0.2)
- Mica, from SoftwareFarm ( license)
- Marimba's FreeBongo
- dog.gui ,a lightweight, high-performance Java GUI toolkit which can serve as a replacement for the AWT (license: MozillaPublic License)
- SWANK,a GUI toolkit implemented in Java, to be used with Jacl, a Tcl intrepreterin Java (BSD-style license)
- JAPI, a non-OO, procedural toolkit built on top of AWT, and accessible from Pascal, C and Fortran, for Windows and Unix
- Epeios, for Unix and Windows, GPLed.
- SWT, The Standard Widget Toolkit,
part of Eclipse project, for Windows, Mac, QNX and Unix (Motif, gtk and Qt) (CPL license)
- Buoy, a "transparent wrapper" around Swing
- XUI, a toolkit for building Java applications with Java and XML, release under an MPL like license.
- java-gnome, GNOME Java binding (LGPL)
- QtJava, Qt Java binding (GPL)
- wx4J, wxWidgets Java binding (BSD-style license)
Ada
- GtkAda , Ada binding for gtk+,for X11 and Windows ( GPLed plus exceptions )
- X11Ada ,X11 and Motif bindings forAda
- VisualAda Developer, RAD environment for Ada
- GWindows , GUI framework for Ada on Windows
(GPL/LGPLplus exceptions )
- Windex, Ada wrapper for the Win32 API ( GPLplus exceptions)
- JEWL, Simple GUI framework for rapid development of GUI programs ( GPL)
- Claw, Ada framework for the Windows API, demo version
- JAPI,binding for Java AWT (LGPLed)
- RAPID, Rapid Ada Portable Interface Design tool,. generates Ada code using a platform independent GUI library. (Current implementations utilize the TASHbinding to Tcl/Tk, the GNAT to JVM compiler, the Microsoft .NET framework, or GtkAd)
BASIC
LISP
- Garnet, GUI development environment for Common Lisp. No longer supported.
- XIT
- Winterp, a rapid development tool for GUI applications with a small object-orientedLISP interpreter ( XLisp-Plus) (BSD-stylelicense)
- Newlisp includes Tk binding (GPLed)
Tcl
- Tk,the standard widget set for Tcl, for X11, MS Windows, and MacOS.
- itcl ([incrTcl]), with itk ([incrTk]) and [ incr Widgets] ,object-oriented extension to the Tcl language and associated mega-widgetset and GUI framework.
- BLT extensionto the Tk toolkit.
- Tix, the Tk InterfaceExtension.
- TclMotif, Motif binding for Tcl.
- BWidgets ,"a professional look&feel Toolkit. Everything is native so noplatform compilation, no compiled extension library needed. In Pure Tcl/Tk.For Unix, Windows and Mac." ( LGPLed)
- Tcl-gtk , gtk+ binding for Tcl
- PicoGUI
Pascal
- EFLIB, "extended function library"
- Free Pascal's gtk+bindings
- BlackBox Component Framework, successor to Oberon/F, using Component Pascal, for Win32 and Mac ( free for education use only)
- WOL, Framework for windowed programming under Windows and Linux (GTK) with Free Pascal. (GPLed)
- JAPI,binding for Java AWT (LGPLed)
- Lazarus, (LCL or Lazarus Class Libraries) the class libraries for Free Pascal that emulate Delphi, currently built on top og gtk+ (LGPLed)
Modula 2
- Dialog Machine and RAMSES (Research Aids for Modeling and Simulation of Environment Systems) "providesthe basis for highly portable programming of interactive applications,since it makes a minimum of assumptions on the properties of the underlyingoperating system and the hardware", available for MacOS, Atari ST (GEM),PC (GEM, MS Windows, Windows NT) and Unix (SUN and IBM RISC). RAMSES is Mac only. Both no cost freeware.
Perl
- XForms4Perl ,XFormsperl binding.
- pTk,perl/Tk, tkPerl, Tk binding for Perl.
- PerlQt, perl bindings for Qt . (LGPLed)
- Perl bindings for gtk+
- plFLTK , Perl bindingsfor Fltk (LGPLed) (discounted)
- FLTK.pm, Perl bindings for Fltk version 2
- wxperl,WxWidfgets Perl binding
- Prima, "an extensible Perl toolkit for multi-platform GUI development. Supported platforms include Linux, Windows NT/9x/2K, OS/2, and UNIX/X11 workstations" (BSDed)
- PicoGUI
Python
- Tkinter, Tk-based GUI toolkit for Python, part of standard of Python distribution. Tk-based Additions, bindings under Pythin:
- Pmw (Python MegaWidgets) (also extra contributions)
- TIDE (Tix)
- Rivet,Tk binding for Python
- wxPython
, WxWidfgets Python binding
- vkApp,a Python GUI application framework, and PythonX Extension, Python interface to X11 and Motif.
- WPY, a MFC-based GUI class library for Python, for MS Win95/NT and Unix/X11 using Tk.
- Python-Gtk andpygtk (gnome-python) ,Python bindings for gtk+andGNOME
- pyFLTK , Python bindingfor Fltk (LGPLed)
- FXPy, Python binding for FOX (LGPLed)
- Python X Library, X11 client-side API implemented purely in Python (GPLed)
- PicoGUI
- pyQT, Qt binding for Pytbon
- PyKDE,Python bindings for KDE
- pygame, SDL binding
- Jython provides access to Java GUI facilities
- JTKinter, port of tk to Jython
- JPI Java Python Interface (project dead)
Javascript
- Vexi written in Java, Vexi applications are written in a combination of XML and JavaScript (core GPLed, widgets LGPLed)
Scheme (including Guile)
- MrED,a WxWindows -based toolkit for scheme, for X11,MS Win95/NT, and MacOS
- STk,a scheme interpreter with access to Tk
- guile-gtk,Guile bindings for gtk+ (GPLed)
- guile-fltk, Guile binding for Fltk (LGPLed)
Oberon
- Visual Oberon, a collection of GUI classes for Oberon-2, for X11 ( GPLed).
Smalltalk
Prolog
- XPCE (GPLed ), for SWI-Prolog
S-Lang
Pike
Lua
- lua-gtk and lua-gnome , Lua's gtk+ and GNOME bindings
- lua-FLTK, Lua FLTK binding
- wxLua, WxWindows binding for Lua
- tkLua, tk binding
- IUP (Portable User Interface), a highly portable toolkit for Lua and C, for Windows and X11/Motif.
Others
- CoderForm, a presentation and layout manager for .NET desktop applications, allowing creating the GUI from any .Net language
Commercial Toolkits
C/C++ oriented
Name |
|
|
|
|
XP/Vista |
|
|
|
MacOS X |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|||||
CLX | (Component Library for Cross-platform) Cross-platform library for Delphi , Kylix and CBuilder - Based on topof Qt, works on Win32 and GNU/Linux (x86) | y |
y |
y |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CroPL |
a C++ application framework and utility library for single-source Mac/Windows applications |
|
|
y |
y |
|
|
y |
y |
|
Framework | rich DOS-based business application development environment, orginated from Ashton-Tate's Framework product, with FRED. Object-Function-Based, Text-Aware, rapid application development Language | |||||||||
|
( companyout of business) |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|||
JX | a full-featured C++ application framework and widget library (SDK) for use with the X Window System | y | ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
included with Metrowerk's Mac OS compilers. |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
developing and deploying scientific and engineering applications without writing any GUI code. Support Visual C++ and Compaq Visual Fortran. |
|
|
|
|
|||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
||
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
y | ||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
Java Oriented
- Sun/ Javasoft's AWT
- Sun/ Javasoft's IFC and JFC (Swing) withvariable look
- Microsoft'sAFC
- Borland/Inprise 's JBCL(JavaBeans Component Library) (part of JBuilder)
- Xelfi Technologies 's Xelfi(30 day free evaluation, low cost registration required for longer use)
- Visix's Vibe Foundation Classes (powerful GUI framework ispart of a complete Java development system Vibe) ( company out of business)
- SL-GMS , a framework for providing dynamic graphics in Pure Java applications
- UITools, "a toolkit for building graphical user interfaces (GUI) for simulation programs," like these tasks commonly done with MatLab and FORTRAN.
- Bambookit, XML-based User Interface, Java-based thin client platform that can be accessed anywhere, with any browser
C#
- WinForm, the standard C# GUI class library/framework.
Ada
Fortran
- Winteracter, a modern GUI toolset for the Fortran 90/95 programming language, for Windows and Linux
Pascal (including Delphi)
- VCL(Visual Component Library), the GUI foundation for Inprise/Borland'spopular RAD tool Delphi, forWin 3.1/95/98/NT, "object-oriented component framework delivers the only truecomponent architecture with over 200 visual and non-visual components thatare completely reusable and extendable"
- CLX, Cross-platform library for Delphi , Kylix and CBuilder - Based on top of Qt, works on Win32 and GNU.Linux (x86)
- O2, OO framework for Delphi, including user interface layer
Fortran
- SancsGUI, for Compaq Visual Fortran, An object-oriented modeling and simulation environment for developing and deploying scientific and engineering applications without writing any GUI code. For 32-bit Windows.
Misc
- XPCE, GUI system for Prolog, Lisp and C++.
- MetaCard, a Hypercard-typescript language with integrated GUI library, for Unix/X11 and MS Win 3.1/95/NT.
Related Links
Other GUI Toolkit Pages
- the FSU Toolkit Page
- BradMyers'sUser Interface Software Tools page
- Steve Baum's GUIpage
- Laura Michaels'sPortableScreen Library Resources page
- The Platform Independent GUI FAQ
- Karim Ratib's" http://www2.iro.umontreal.ca/~ratib/code/gui.htm#gui"
- Scientific applicationson Linux's X11 Libraries & Toolkits page
- SunWorld 'soverview of GUI toolkits by Cameron Laird and Kathryn Soraiz.
- Themes.org , a web site dedicatedto GUI themes (variable look and feel)
X Windows/Motif
- MW3: Motif on the WorldWide Web: a monster list of Motif and X Window-related resources, includingGUI libraries and tools. Now motifdeveloper.com
- Kenton Lee's TechnicalX Window System and OSF/Motif WWW Sites: another rich list of X Window/Motifresources.
Alternative Windowing Systems
- Fresco (Berlin), an attempt to provide an alternative to X Windows.Also listed as a free GUI toolkit
- MiniGUI, small windowing system for embedded applications
- Microwindows (NanoGUI), small windowing system for embedded applications, for DOS, MS Windows, Unix, Linux SVGAlib, Linux kernel framebuffer (MPLed/GPLed)
- DirectFB, a thin library that provides hardware graphics acceleration, input device handling and abstraction, integrated windowing system with support for translucent windows and multiple display layers on top of the Linux Framebuffer Device. (LGPLed)
- PicoGUI
- Y Widnow System
Papers on GUI
- "GUI Fragmentation is the Greatest Weakness of Unix", arguing for good GUIstandards for Unix systems in responce to attacks by Microsoft Windows.
Drag and Drop protocols
Commercial Java Systems
- Vibe, a complete Java deployment system including tools fromcompiler to custom virtual machine. ( company out of business)
Organizations for Free Software
- Free Software Foundation
- Linux International
- Software in the Public Interest (Debian GNU/Linux)
- X.org Foundation, the revitalized organization, successor to the orginal X Consortium, maintaining the X Window System.
- Free Standards Group, the organization responsible for setting standards in Free OSes. parent of the Linux Standards Base
- The XFree86 Project, Inc. Producer of the XFree86 , the X Windowserver for PC based UNIX and UNIX-like systems, role generally replaced by X.org
- The Open Source Initiative, organization for promoting the "Open Source" concept
- OpenOffice Foundation , the organization managing the OpenOffice project
- GNOME Foundation , the organization for GNOME
- KDE League, for the KDE project.
Important Free Software Projects
- GNU
- Linux , alsoknown as GNU/Linux ,GPLed Unix clone
- XFree86
- Netscape Communicator and Netscape Navigator (Mozilla), the once most popular web browser in the world, becomes free software on March 31, 1998.
- Arena,the free browser formally developed by the World Wide Web Consortium, now supported by Yggdrasil.
- Amaya , the free browser/editordeveloped by the World Wide Web Consortium
- FreeBSD , BSD-derivedfree Unix
- OpenBSD , BSD-derivedfree Unix
- NetBSD , BSD-derivedfree Unix
- OpenOffice , formerly StarOffice, now the free software office suite project support by Sun and in association with GNOME as the GNOME Office.
- Eclipse, Java-based open extensible IDE.
Free Object-oriented Componet Software Framework
- OpenDoc,the famous Apple/ IBM invention, maybe someday free software. (C++ API)
- OpenParts,KDE's component framework with ideas from OpenDoc
- Bonobo, GNOME's component framework
Free Java Systems/Compilers
- JDK(Java Development Kit), from Sun / Javasoft.( Linux version )(SGI version)
- Kaffe , a Java virtual machine from TransVirtual ,and just-in-time compiler, works on most Unix's, MS Win 95, NextStep and Amiga (GPLed).
- Japhar , a free JVM from the Hungry Programmers ,the offical GNU Java VM (LGPLed).
- Guavac, a GPLed Java source-to-bytecode compiler written in C++.
- Jikes, a Java source-to-bytecode compiler, faster Javac replacement
- Jump, a Java source-to-bytecode compiler with non-standard Java language extension,10 to 30 times faster than Javac
- j2c, a Java class file-to-C translator
- Toba, a Java class file-to-C translator, for standalone applications (not applets).
- gcj, the GNU Java compiler
Free C# Systems/Compilers
- Mono, an effort to create an Open Source implementation of the .NET Development Framework. Includes: a compiler for the C# language, a runtime for the Common Language Infrastructure and a set of class libraries (GPLed plus exceptions for linking)
- DotGNU, including Portable.NET, an effort to create an alternative to Microsoft .NET, including C# compiler and run-time libraries. (GPLed plus exceptions for linking)
Library Binding Generation Tool
- SWIG (Simplified Warpper and Interface Generator), "a program development tooldesigned to make it easy to build scripting language interfaces to C/C++ programs."
GUI Toolkit Implementation Utility Libraries
- libsigc++,"a library implements a full callback system for use in widget libraries,abstract interfaces, and general programming."
(LGPLed)
Graphical Desktop Environments
- CDE, Common Desktop Environment, the commercially standard Unix desktop
- KDE , the K(ool) Desktop Environment, based on Qt.
- GNOME, GNU Network Object Model Environment, based on gtk .
- XFCE , a lightweight desktopenvironment for various UNIX systems, based on gtk
- GNUStep , the free softwareimplementation of the OpenStep desktop environment
- FLEK, an application framework "environment" based on Fltk
- Equinox Desktop Environment, based on Fltk
Others
- Mesa, a 3D graphics library providing an Open GL API, licensed under BSD (X11)-style license and now part of XFree86
- GLUT,the OpenGL Utility Toolkit, a window system independent toolkit for writingOpenGL programs
- vtk , The VisualizationToolkit (C++ API) ( license)
- GIMP , the GNU Image Manipulation Program, a Photoshop-style painting program, licensedunder GPL.
- FilmGIMP, a fork of GIMP for movie editing.
- ImageMagick, a set of powerful image manipulation/processing programs. Functions availableto other programs via a rich API.(BSD-stylelicense)
- libart (alt site), GNOME/RaphLevien's advanced 2D graphics library (LGPLed)
- Zodius, a C++, easy-to-use 2D graphics library (BSD-style license)
- Cario, a LGPLed/MPLed "vector graphics library designed to provide high-quality display and print output. Currently available output targets include the X Window System, OpenGL (via
glitz), Quartz, win32, in-memory image buffers, PNG images, PostScript, and PDF files. Some of these backends are still experimental. Cairo is designed to produce identical output on all output media while taking advantage of display hardware acceleration when available (eg. through the X Render Extension or OpenGL)."
Possibly the standard 2D graphic API on free OSes.
- AGG (Anti-grain geometry, a powerful C++-based advanced 2d graphics rendering library
(BSD-style license)
- SDL (SimpleDirectMedia Layer) library, providing direct video framebuffer accessfor fast rendering, supports Linux, Win95/98/NT/2000, BeOS, MacOS, Solaris,IRIX, and FreeBSD. ( LGPLed)
- OpenGL (Sample Implementation), now free software.
- OpenInventor , advanced object-oriented 3D graphics framework, now free software. offering a comprehensive solution to interactive graphics programming problems. It presents a programming model based on a 3D scene database that dramatically simplifies graphics programming.
(LGPLed)
- SATIN and Quill, Java-based gesture toolkit that allow ink gesture inputs to drive GUIs (BSD licensed)
- A list of Drawing and Design Programs
Companies developing/supporting FreeSoftware
Other Free Software websites
- free-soft.org , aweb site providing general Free Software/Open Source information
- The Free Software Bazaar
- advogato.org , general discussion site for free software developers
If you think anything is incorrect orwant to provide more information for inclusion in this page, please contact(via e-mail)
Copyright
© Copyright 1997-2003, 2005, 2007 AD ( ROC Years 86-92, 94, 96), by Li-Cheng (Andy) Tai, All rights reserved. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
All trademarks are the property of their respective owners.
page created Apr 19, 1997 (86)
有幾個小伙伴看完啦? 看完的老板會多發年終獎喲^_^
由於這里不僅介紹了C++,還介紹了其他語言,那我們就挑少的先講吧。
一、C#
其中C#的庫是最少的,只有Mono和DotGNU兩個,而其中的
Mono就是逆天了的跨平台C#庫啦,很多人感慨如果C#這么方便的語言可以在linux上用就爽歪歪啦,這不,Mono不僅可以在linux PC機上運行,還可以在Android上運行,誰說微軟不跨平台了!
Alberl之前只是聽說.NET拖拖控件就可以做出很漂亮的界面,結果發現連直線、圓形都可以直接拖上去,沒想到有這么方便! 在向8年.NET經驗的同事請教了之后,發現.NET簡直完爆VC++的那一系列界面(如MFC、WTL),MFC要好多個步驟才能搞定布局、自適應窗口大小、改變背景色、控件透明等等,但是在.NET上都是動動鼠標、右鍵完事。哎,說真的,搞得Alberl當時都驚呆了!!!
如果只是開發普通樣式的界面,
真的不用考慮MFC了! 不過話說回來,如果要開發出QQ、金山那樣的界面,.NET也是需要做很多事情的,雖然只要花時間就可以完成(而MFC是花時間也不一定能完成的,還需要有比較高的水平),但如果VC++用上開源界面庫的話,就比.NET要爽很多啦~
二、Python、Lua、Perl
這幾個腳本語言也有人去折騰界面,其中wxPython還被標記成【good】,可見也是做得很不錯的。
三、Java
Java的界面庫也有十多款,其中SWT被標記成【good】,介紹說是標准的工具,Eclipse的一部分。(Alberl對GWT比較眼熟,可能是記錯了)
四、SDL
小伙伴們會發現有很多SDL字樣,那么SDL是何物呢? 還記得第一篇教程嗎? 那個ffmpeg播放視頻就是用的SDL。 SDL在多媒體和游戲領域可是非常出名的哦。VLC的播放也可以用SDL哦~
五、C++
可以看到,C#和Java的界面庫很少,而C++的多到看不完,難道是C++很強大? 錯,同一類型的
開源庫越多,就說明這個方向越弱。而C#和Java的界面庫之所以這么少,是因為他們的界面庫已經能滿足目前絕大部分需求了,無需其他界面庫了。而C++卻一直沒有一個好點的界面庫,所以總是有大牛覺得其他界面庫不好用,於是就有了各種各樣的界面庫,並且十多年過去了,還沒有定論,哪一種界面庫都沒能一統天下。
不過C++的界面庫是分linux和Windows的,兩個平台的形勢大不一樣。
linux
linux下面就簡單多了,由於其應用大部分都沒有界面的,有界面的要求也不是很高,所以現有的開源庫已經能夠滿足需求了,而在上述這么多開源庫中,只有
QT被標記為【Best】,可見QT是非常被認可的。而linux下就以QT最為權威了,而WxWidgets、GTK、GTK+、Fltk也比較著名,linux嵌入式下miniGUI最為著名(終於看到中國人的開源項目被世界認可了^_^),其他的很多界面庫就不提了,總之,linux下面,有這些界面庫已經夠用了。
windows商業庫
那么windows下的形勢就完全不同啦,不僅開源庫很多,而且商業庫也很多,其中不僅有大公司的商業庫,也有很多小公司的商業庫,競爭非常激烈,不過微軟是其中的巨頭!上述列表中提到的OWL、VCL、CLX都是Delphi里面的,Delphi已經被淘汰了。而MFC被列在第一位,其他商業庫基本沒聽說過,可見MFC是唯一的知名商業庫,已經打敗了其他商業庫一統天下了。
而其中並沒有列出win32,可以說把win32和MFC混為一談也沒什么不可以。既然混為一談的話,那么也就是說這些東西都是建立在win32的基礎上,那么剛剛說的小公司的商業庫就不能說是界面庫的競爭者了,而Alberl說的這些小公司指的是國內所謂DirectUI的公司,從上述列表來看,都是以平台來做比較的,而那些DirectUI公司都沒有自己的平台,都是建立在win32的基礎上,所以根本都沒資格排到這里來。所以這些DirectUI公司,其實可以和BCG、XTP這些公司並為一列,那就是說他們不是平台,而是建立在win32這個平台上的一堆庫而已。
BCG、XTP都稱自己是控件庫公司,建立在win32或者MFC之上;而天朝公司一向喜歡故弄玄虛,炒作概念,號稱是一個界面平台,搞得好像他們有自己的平台一樣,其實他們還是建立在win32的平台上,還是要靠微軟,還是windows編程。而所謂的適用於多種編程語言,並不是他們的庫有多么NB,因為只要是標准的dll,就可以被任何支持dll的語言調用,但在他們的宣傳中,讓人感覺就是:好像dll本身不能被多種語言調用一樣,好像是被他們改進之后才有這個功能一樣o(╯□╰)o。
好吧,商業公司中當然是BCG、XTP最為著名啦,他們都是建立在win32或者MFC之上,作為一個輔助而已。
windows開源庫
雖然上面列舉了
上百款開源庫,並且很多都是
跨平台的,但除了QT在windows上闖出了名氣以外,其他幾個還是只能在linux稱王。不得不說微軟的產品線做的非常完善,不然早就被linux那一堆跨平台打垮了。也不得不說windows的占有率非常之高,導致很多公司只做windows平台,壓根不需考慮linux,所以那些所謂的跨平台對很多公司真的是一點吸引力都沒有!(智能手機大量流行之后除外,也就是2011年之后)
其實呢,這些界面庫在國外應該是夠用啦,看看國外那些殺毒軟件,在國內比起來簡直是土鱉界面,但在國外卻是比較好看的界面。像MSN、GTalk、Skype,界面也是一般般啦,用用MFC、自繪控件、商業庫(BCG、XTP),也是很容易做出來的。不過MSN是DirectUI,國內火爆的炒作DirectUI也提到了MSN,其實微軟技術這么牛,平台都是自己做的,技術根本就不是問題啦,所以微軟的某個東西用的什么技術成功了,不代表我們就能成功,我們能和微軟去比么... 那說說GTalk、Skype吧,不過Alberl沒安裝過着兩款應用,所以無從說起,還請網友們提供測評信息~O(∩_∩)O~
那再說說火狐系列吧,從火狐瀏覽器、Thunderbird等一系列火狐產品,都是用的自主開發的
XUL,並且效果都不錯! 那我們也去用XUL? 不過Alberl也不知道有沒有其他公司用XUL,還請網友們提供信息。並且XUL是人家自己開發的,有問題了隨時可以解決。咱們要是出了問題,找誰解決,去哪找資料?
看來windows下的界面庫還真是windows一統天下了,還真得靠win32提供的消息機制了。不過好消息還是有的,即使要靠win32平台,也有很多不錯的界面庫。並且還有更多的不靠win32平台的開源庫。由於本節只是介紹C++ Native界面庫,所以Web界面庫以及依賴win32的界面庫將在下一個教程中介紹~O(∩_∩)O~
需要提醒的是,Alberl並沒有一一去對比上面列舉的上百款界面庫,只是挑了一些著名的庫做介紹,並且介紹也
都是道聽途說的,沒有親自驗證,還請各位網友對Alberl的介紹持懷疑態度,如果有哪位網友對其中的界面庫有過深入的了解,
希望能提供一些信息。
最后感嘆一下:哎,怎么老外動不動就自己開發框架呀,怎么咱們動不動就到處找別人的框架呀o(╯□╰)o