Zum Inhalt springen

gtkmm

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 26. April 2023 um 23:36 Uhr durch imported>Trustable (wikilinks).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
gtkmm

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | GTK-Logo
Basisdaten

Maintainer Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Entwickler Murray Cumming, Daniel Elstner
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
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 Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Betriebssystem Unix, Linux, Windows
Programmier­sprache 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

Datei:Gtkmm example.png
Das Ergebnis des Beispielprogrammes, kompiliert mitg++ 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">

  1. 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

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

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

Einzelnachweise

<references />