GTK/ Hallo Welt

Aus Wikibooks

< GTK
Wechseln zu: Navigation, Suche

Das erste Erfolgserlebnis beim Erlernen einer neuen Programmiersprache ist das berühmte Hallo-Welt-Beispiel. Das wollen wir doch gleich einmal in GTK umsetzen!

#include <gtk/gtk.h>
 
 int main(int argc, char* argv[])
 {
     GtkWidget *window;
 
     gtk_init(&argc, &argv);
 
     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
     g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
 
     gtk_container_add(GTK_CONTAINER(window), gtk_label_new("Hallo Welt!"));
 
     gtk_widget_show_all(window);
 
     gtk_main();
 }
Das Hallo-Welt-Programm.
Das Hallo-Welt-Programm.

Wenn du das Beispiel kompilierst und die erzeugte Datei ausführst, öffnet sich ein kleines Fenster mit dem Text "Hallo Welt!". Das ist nicht viel, aber immerhin ein Anfang und der Einstieg in die Welt von GTK.

[Bearbeiten] Details des oben stehenden Codes

C++-Programmierern braucht man wohl die Bedeutung der Syntaxelemente nicht weiter zu erklären. Man sieht die bekannte Hauptfunktion des Programms, Anweisungen, die an GTK und GLib gerichtet sind, und eine Einbindung einer Headerdatei. Diese Datei macht dem Compiler die GTK-Funktionen bekannt.

Zuerst wird eine Variable für das neue Hauptfenster definiert. Diese nennen wir der Einfachheit halber mal window. Danach wird GTK initialisiert und die Kommandozeilenparameter übergeben - dies erlaubt es unter anderem, das grundlegende Verhalten von GTK-Programmen festzulegen oder mit GLib Kommandozeilenparameter auszuwerten - intern wird fast jeder Aufruf zu der niedrigsten Ebene durchgereicht, unter anderem auch an GLib. Das soll uns aber im Moment nicht kümmern.

Danach wird - Überraschung! - unser Fenster tatsächlich erzeugt und die eindeutige Nummer unserer Variablen zugewiesen. Diese Nummer brauchen wir nämlich noch, denn wir wollen ja etwas mit dem Fenster tun - Elemente hinzufügen, das Fenster anzeigen, ...

Doch zuerst verbinden wir ein Signal mit dem Fenster. Ein Signal ist im Grunde das gleiche, was man auch in anderen Sprachen Event nennt - ein Ereignis, welches bei einer bestimmten Aktion ausgelöst wird. Das Ereignis heißt hier delete_event und entspricht dem Schließen des Fensters mit dem Schließen-Knopf. Für dieses Ereignis machen wir die Funktion gtk_main_quit zuständig - sie beendet das Programm. Du könntest auch eine eigene Funktion dafür einsetzen - um bei einer Textverarbeitung den Benutzer zu fragen, ob er eventuelle Änderungen sichern will. Das NULL kann ein Argument sein, welches du der Funktion übergibst - doch dazu später mehr.

Danach wird das Label (also der Text) hinzugefügt. Da wir nichts weiteres mit dem Label vorhaben, ist es nicht notwendig, die eindeutige Nummer in einer Variablen zu speichern. Wir geben das Label direkt an eine weitere Funktion weiter: sie fügt das Label unserem Fenster hinzu. Danach wird noch das Fenster und alle seine Kindelemente angezeigt, anschließend wird die Ereignisschleife gestartet. Das bedeutet, das Programm reagiert nun auf Mausbewegungen, auf Tastatureingaben, kurz: es wird bedienbar, es "lebt".

In den folgenden Kapiteln werden die Bedeutungen der ganzen Anweisungen nun genauer erläutert und es werden weitere Funktionen für neue Zwecke vorgestellt.

Persönliche Werkzeuge