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

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

Eine populäre Anwendung, die gtkmm benutzt, ist Inkscape.

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

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. mail.gnome.org
  2. mail.gnome.org
  3. mail.gnome.org