gtkmm
| gtkmm
| |
|---|---|
| colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | GTK-Logo | |
| Basisdaten
| |
| Maintainer | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Entwickler | Murray Cumming, Daniel Elstner |
| Erscheinungsjahr | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Aktuelle Version | 3.22.1 (23. Juni 2017<ref>mail.gnome.org</ref>) 2.24.5 (4. September 2016<ref>mail.gnome.org</ref>) |
| Aktuelle Vorabversion | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. (Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.) |
| 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[Bearbeiten]
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[Bearbeiten]
g++ beispiel.cc `pkg-config --cflags --libs gtkmm-2.4`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.
<syntaxhighlight lang="cpp">
- 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;
} </syntaxhighlight>
Benutzeroberflächen können mit gtkmm entweder explizit programmiert oder, wie bereits Gtk-Oberflächen, mit Hilfe des Programms Glade erstellt werden.
Verwendung[Bearbeiten]
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.<ref>mail.gnome.org</ref>
Eine populäre Anwendung, die gtkmm benutzt, ist Inkscape.
Alternativen[Bearbeiten]
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[Bearbeiten]
Weblinks[Bearbeiten]
- gtkmm-Projekthomepage
- Offizielles Tutorial (deutsch und englisch gemischt)
- Tutorial (auch offline-Version vorhanden)
- Deutsches GTKmm-Tutorial in vier Teilen
Einzelnachweise[Bearbeiten]
<references />