Dies ist eine alte Version des Dokuments!

Es ist zum Standard bei Anwendungen geworden, diese mit einer Menüleiste auszustatten. Dort gibt es klassischerweise die Menüs „Datei“, „Bearbeiten“ und „Ansicht“, oft auch mehr. Oft benutzte Funktionen, auf die man schnell zugreifen sollte, packt man am besten in eine Werkzeugleiste. Dort findet man oft Icons, die für die Funktionen stehen.
Das Zentrum eines GTK-Menüs 1) bildet die GtkMenuBar. In die GtkMenuBar packt man dann GtkMenuItems. Um ein aufklappendes Menü zu erzeugen benutzt man ein GtkMenu. Dieses verbindet man mit einem GtkMenuItem in der GtkMenuBar. In das GtkMenu kann man dann wieder GtkMenuItems packen.
Kommen wir zur Umsetzung: Als Basis benutzt bitte das leere Fenster aus dem Kapitel Erste Schritte mit GTK+ und erweitert es mit einer vertikalen Box.
Um eine Menüleiste mit einem Menu („Datei“) und einem Eintrag („Beenden“) zu erstellen, benötigen wir zudem 4 weitere GtkWidgets:
GtkWidget *menubar, /*die Menüleiste an sich: wird später in die vertikale Box gepackt*/ *filemenu, /*das "Datei"-Menü, in das wir das Beenden-Item stecken.*/ *fileitem, /*das "Datei"-Item: kommt in die Menüleiste und wird mit "filemenu" verknüpft*/ *quititem; /*das "Beenden"-Item*/
Als nächstes erstellen wir menubar und filemenu, mit der Gtk üblichen *_new Funktion:
menubar = gtk_menu_bar_new(); filemenu = gtk_menu_new();
Nun kommt die GtkMenuItems an die Reihe. Hierbei gibt es jedoch nicht nur eines:
| Typ | Beschreibung | Funktion zum Erstellen |
|---|---|---|
| GtkMenuItem | Ein einfaches Item, nur mit Text | gtk_menu_item_new(gchar * text) gtk_menu_item_new_with_mnemonic(gchar * text) |
| GtkImageMenuItem | Ein Item mit einem kleinen Icon, welches über eine GTK_STOCK_ID gesetzt werden kann 2) | gtk_image_menu_item_new(void) gtk_image_menu_item_new_from_stock(const gchar* STOCK, GtkAccelGroup *ag) |