gtkmm

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
gtkmm

GTK-Logo
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
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

[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]
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.

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

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.

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.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. mail.gnome.org
  2. mail.gnome.org
  3. mail.gnome.org