In diesem Wiki-Artikel werden Bibliotheken für grafische Benutzeroberflächen vorgestellt, mit deren Hilfe sich ein Programm mit einem grafischen Interface ausstatten lässt.
Im Folgenden eine kurze Liste mit den entsprechenden Paketen aus den Ubuntu-Paketquellen.
Übersicht | Bindings | ||||||||||||
Name | Sprache | Paket | Repository | Website | Bild | C++ | C# | Java | Perl | Python | Ruby | ||
FLTK | C++ | libfltk1.1-dev | main | fltk.org | * | Ja | |||||||
FOX | C++ | libfox1.6-dev | universe | fox-toolkit.org | * | Ja | Ja | Ja | |||||
GTK+ | C | libgtk2.0-dev, libgtk-3-dev | main | gtk.org | * | Ja | Ja | Ja | Ja | Ja | Ja | ||
Qt | C++ | libqt4-*, python-qt4-* | main | qt-project.org | Ja | Ja | Ja | Ja | Ja | Ja | |||
Wt | C++ | witty-dev | universe | webtoolkit.eu | Ja | ||||||||
wxWidgets | C++ | libwxgtk2.6-dev | universe | wxwidgets.org | * | Ja | Ja | Ja | Ja | Ja | Ja |
FLTK (Fast Light Toolkit, gesprochen "fulltick") ist eine plattformunabhängige C++ Bibliothek. Das Ziel ist es ein sehr "leichtes" GUI-Toolkit anzubieten, das ohne extra Klassen für z.B. Strings auskommt und sich nur auf die GUI konzentriert.
Bei FOX handelt es sich um ein Toolkit, das in C++ geschrieben ist. Die Zielsetzung liegt hier auf möglichst großer Plattformunabhängigkeit, guter Leistung und leichter Erweiterbarkeit. Bindings gibt es für folgende Sprachen:
Da Qt am Anfang seiner Entwicklung nicht unter einer freien Lizenz stand, wurde GTK+ (ursprünglich Gimp ToolKit) als Alternative aus der Taufe gehoben. Dem von der Verbreitung her Qt ebenbürtigen GTK+ ist ein eigener Artikel gewidmet: GTK+/Programmierung.
Dieses in C++ geschriebene Framework wird Open-Source-Projekt (vorher von Nokia, davor von Trolltech) entwickelt. Qt bietet Module für viele verschiedene Zwecke, z. B. Threads, Netzwerk, OpenGL, aber natürlich auch ein GUI-Modul.
Qt dient dem KDE-Projekt als Basis für viele Softwarekomponenten, insbesondere natürlich auch der GUI. Qt ist plattformunabhängig und verwendet unter Windows und Mac OS X die nativen Controls, um sich besser in die Oberfläche des jeweiligen Systems zu integrieren. Auch für Qt existieren eine Reihe von Bindings für andere Sprachen außer C++:
C# (Qyoto)
Java (QtJava)
Perl (PerlQt)
Python (PySide)
Python (PyQt)
Ruby (qtbindings, vormals Korundum, QtRuby)
Die Online Documentation bietet eine exzellente Dokumentation zu Qt einschließlich zahlreicher Beispiele und Tutorials. Im Paket qt4-doc ist diese ebenfalls enthalten.
Wt ermöglicht es, Web-Anwendungen wie klassische Desktop-Anwendungen in C++ zu entwickeln. Hierfür bringt es das aus Qt bekannte Signal/Slot-Prinzip sowie Layout-Manager mit. Daneben zählen gute Skalierbarkeit, eingebauter Schutz vor häufig auftretenden Sicherheitsproblemen im Web und Browserunabhängigkeit zu den Kern-Features von Wt.
Das wxWidgets Toolkit (früher als wxWindows bekannt) legt sehr viel Wert auf große Plattformunabhängigkeit. Für dieses Toolkit existiert ein breites Spektrum an Bindings für andere Sprachen als C++. Unter anderem für:
Für wxWidgets gibt es eine sehr gute Dokumentation für die Versionen 2.4 , 2.6 und 2.8 , welche man aber auch mit den Paketen
wx2.4-doc (universe) bzw.
wx2.6-doc (universe) bzw.
wx2.8-doc (universe)
aus den Quellen installieren kann.
Zusätzlich gibt es das 744-Seiten dicke Buch Cross-Platform GUI Programming with wxWidgets kostenlos zum Download (links unter "More Information -> Download").
Normalerweise ist die Einbindung von wxWidgets in den Entwicklungsumgebungen kein Problem, so wird KDevelop beispielsweise von Haus aus komplett konfiguriert. Bei älteren CodeBlocks-Versionen in Verbindung mit wx2.4 gibt es dagegen Probleme. Nach der Erstellung eines neues Projektes öffnet man die Projekt-Optionen unter "Project -> Build Options". Im Tab "Compiler" wechselt man zu "Other Options". In der untersten Zeile sollte der Eintrag wx-config --cflags
stehen. Man öffnet nun ein Terminal und gibt genau diesen Befehl
wx-config --cflags
ein. Man kopiert die Ausgabe des Befehls nun und fügt diese in den Compiler-Optionen von oben ein. Eine Ausgabe könnte dabei wie folgt lauten
-I/usr/lib/wx/include/gtk-2.4 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
Außer dieser einen Zeile sollte in den Compiler-Optionen nichts stehen und alles andere gelöscht werden. Danach wechselt man in das Tab "Linker" und findet dort wieder einen wx-config Aufruf. Diesen gibt man wieder im Terminal mit
wx-config --libs
ein. Die Ausgabe, die wie folgt
-pthread -lwx_gtk-2.4
aussehen könnte, kopiert man wieder in die Linker-Optionen und ersetzt den alten wx-config Aufruf. Die Anleitung zur Behebung in Code::Blocks sollte aber auch auf jede IDE und Compiler angewandt werden können.
Diese Revision wurde am 3. Januar 2015 15:22 von Hbb erstellt.