Login
Newsletter
Werbung

So, 14. November 1999, 00:00

GTK Workshop: Teil III

Widget-Ausrichtung mit Hilfe von PackBoxes

Wenn Sie ein Programm mit GTK schreiben, wird sehr schnell der Wunsch aufkommen, mehr als nur ein Widget in ein Fenster zu drängen. Im vorherigen Teil hatten wir nur einen einzigen Button. Den konnten wir einfach mit der Anweisung gtk_container_add() in das Fenster packen. Doch was, wenn mehrere Widgets gebraucht werden? Wie kann man kontrollieren, wohin die Widgets kommen? Und hier kommen die PackBoxes ins Spiel.

Grundlagen von PackBoxes

Meistens wird die Ausrichtung von Widgets mit der Variante der PackBoxes gemacht. PackBoxes sind unsichtbare Container-Widgets, in die man andere Widgets reinpacken kann. Es gibt zwei Formen von PackBoxes: die horizontalen und die vertikalen. Wenn die Widgets in eine horizontale PackBox gepackt werden, so werden die Widgets nacheinander von links nach rechts oder von rechts nach links in die PackBox eingefügt. In einer vertikalen PackBox werden die Widgets von oben nach unten oder anders herum eingefügt. Man kann PackBoxes in allen Kombinationen in oder neben anderen PackBoxes verwenden.

Um eine neue horizontale PackBox zu erschaffen, verwendet man die Funktion gtk_hbox_new(). Für vertikale PackBoxes wird folglich gtk_vbox_new() verwendet. Mit gtk_box_pack_start() und gtk_box_pack_end() kann man Widgets in den PackBoxes platzieren. gtk_box_pack_start()wird in den horizontalen PackBoxes die Widgets von links nach rechts einfügen und in vertikalen PackBoxes von oben nach unten. gtk_box_pack_end() wird hingegen in horizontalen PackBoxes die Widgets von rechts nach links einfügen und in vertikalen PackBoxes von unten nach oben. Diese Funktionen erlauben es, die Widgets links oder rechts auszurichten, oder beides, um den gewünschten Effekt zu erzielen. In den meisten Beispielen, die hier gegeben werden, wird gtk_box_pack_start() benutzt.

Durch Benutzung dieser Aufrufe weiß GTK, wo wir die Widgets haben wollen, und es kann dann automatisch die Größen der Widgets anpassen.

Die Details von PackBoxes

Es gibt eine Menge von Optionen zum Plazieren der Widgets. Grob gibt es ungefähr fünf verschiedene Arten, ein Widget zu platzieren.

Hier ist die Deklaration der Funktion gtk_box_pack_start():

void gtk_box_pack_start( GtkBox *box, GtkWidget *child,
gint expand, gint fill, gint padding );

Der erste Parameter ist die PackBox, in die wir ein Objekt hineinsetzen wollen. Der zweite Parameter ist das Objekt, das in die PackBox eingesetzt wird. Vorerst werden wir nur Buttons als Objekte in PackBoxes packen. Wir packen also Buttons in PackBoxes. Der dritte Parameter, expand, bestimmt, ob die Widgets und die PackBox allen verfügbaren Platz einnehmen soll (TRUE), oder ob die PackBox so geschrumpft werden soll, dass sie den Widgets genau passt (FALSE). Wenn der Parameter expand auf FALSE gesetzt wird, kann man die Widgets links oder rechts ausrichten. Andernfalls (wenn expand TRUE ist) werden die Widgets so vergrößert, dass sie in die PackBox passen.

Der Parameter fill bestimmt, ob freier Platz den Widgets zugeteilt wird (TRUE), oder ob der freie Platz einfach wie ein Rahmen um die Widgets dargestellt wird (FALSE). Das Ganze hat allerdings nur einen Effekt, wenn der expand-Parameter auch TRUE ist. Der padding-Parameter gibt den Platz an, der an den Seiten eines Widgets dargestellt werden soll, bei einer horizontalen PackBox linke und rechte Seite, bei einer vertikalen PackBox obere und untere Seite.

Die Funktion, um eine PackBox zu erstellen, ist folgendermaßen deklariert:

GtkWidget *gtk_hbox_new( gint homogeneous, gint spacing );

Der homogeneous-Parameter bestimmt, ob die Widgets in den PackBoxes alle die gleiche Breite bei einer vertikalen PackBox oder die gleiche Höhe bei vertikalen PackBoxes haben sollen. Dabei ist der expand-Parameter von gtk_box_pack_start() immer TRUE.

Der spacing-Parameter gibt an, wieviele Pixel zwischen den Widgets frei bleiben sollen.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung