gtkmm
gtkmm
| |
---|---|
Basisdaten
| |
Entwickler | Murray Cumming, Daniel Elstner |
Aktuelle Version | 3.22.1 (23. Juni 2017[1]) 2.24.5 (4. September 2016[2]) |
Betriebssystem | Unix, Linux, Windows |
Programmiersprache | C++ |
Kategorie | GUI-Toolkit |
Lizenz | LGPL (Freie Software) |
deutschsprachig | ja |
gtkmm.org |
gtkmm ist die C++-Schnittstelle für das freie GUI-Toolkit GTK. Die Bezeichnung gtkmm steht für gtk-- (gtk minus minus), den ursprünglichen Namen des Projektes.
Die gtkmm-Bibliothek steht unter der freien Lizenz LGPL und ist dadurch eine kostenlose Lösung auch für grafische Closed-Source-Programme unter Linux und Unix.
Änderungen gegenüber Gtk
Die Bibliothek kapselt unter anderem das GObject-System in eine funktionsgleiche C++-Klassenhierarchie. In der C++-Variante der GLib, glibmm, werden die Funktionen und Strukturen weitgehend durch Äquivalente aus der C++-Standardbibliothek ersetzt.
Typsichere Rückruffunktionen (Signal-Slot-Konzept) realisiert gtkmm über die Bibliothek libsigc++.
Programmierbeispiel
Das folgende Beispiel erzeugt ein Fenster mit einem Beschriftungsfeld (Label) und einer Schaltfläche (Button). Letzteres wird mithilfe der libsigc++ mit der quit-Funktion verbunden, so dass das Programm bei einem Klick auf den Button beendet wird. Die beiden Widgets werden anschließend in einem Gtk-typischen Container – einer vertikalen Box – untergebracht. Diese Box wird im Fenster schließlich angezeigt.
#include <gtkmm.h>
using namespace Gtk;
int main(int argc, char *argv[]) {
Main kit(argc, argv);
Window window;
window.set_title("Beispiel");
window.set_border_width(15);
Label hello("Hallo Welt!");
Button quit_button(Stock::QUIT);
quit_button.signal_clicked().connect(sigc::ptr_fun(&Gtk::Main::quit));
VBox box(false, 15);
box.add(hello);
box.add(quit_button);
window.add(box);
window.show_all();
Main::run(window);
return 0;
}
Benutzeroberflächen können mit gtkmm entweder explizit programmiert oder, wie bereits Gtk-Oberflächen, mit Hilfe des Programms Glade erstellt werden.
Verwendung
In gtkmm geschriebene Programme laufen auf allen Plattformen, auf denen auch Gtk läuft (unter anderem macOS und Windows), wobei das Toolkit nicht primär zur Cross-Platform-Entwicklung gedacht ist, sondern im Bereich der Unix-Derivate (wie Linux) beheimatet ist.
Aktuell wird gtkmm 4 entwickelt basierend auf GTK 4.[3]
Eine populäre Anwendung, die gtkmm benutzt, ist Inkscape.
Alternativen
Der Funktionsumfang der gtkmm-Bibliothek ist in etwa vergleichbar mit dem der etwas bekannteren Bibliothek Qt. Anders als Qt enthält sie allerdings keine Funktionen, die über die GUI-Programmierung hinausgehen.
Vergleichbare in C++ geschriebene Grafikbibliotheken sind ferner, mit ähnlichem Funktionsumfang, wxWidgets. FLTK ist im Umfang erheblich geringer.
Siehe auch
Weblinks
- gtkmm-Projekthomepage
- Offizielles Tutorial (deutsch und englisch gemischt)
- Tutorial (auch offline-Version vorhanden)
- Deutsches GTKmm-Tutorial in vier Teilen