Die Geometrie-Manager von Tk finden sich auch in Gtk wieder, und sie funktionieren auch sehr analog:
Gtk definiert noch etliche weitere Geometrie-Manager, mit den erwähnten sollte man aber schon recht weit kommen.
Geburt eines Widgets:
Zum Beispiel:
GtkWidget *button = gtk_button_new_with_label("Directory"); gtk_signal_connect(GTK_OBJECT(button), "pressed", GTK_SIGNAL_FUNC(doLs), 0); gtk_box_pack_start(targetBox, button, 1, 1, 0); gtk_widget_show(button);
Was soll der Geometrie-Manager tun, wenn das Widget wachsen sollte?
void gtk_box_pack_start(GtkBox *parent, GtkWidget *child, gboolean expand, gboolean fill, guint padding);
parent ist das Widget, in das child gepackt wird (der Container), padding lässt zusätzlichen Platz um das Widget.
Buttons können genau ein weiteres Widget enthalten (etwa ein Bild). Normalfall ist aber ein label, deswegen spezielle Funktion:
GtkWidget* gtk_button_new_with_label (const gchar *label)
Das interessanteste Signal, das Buttons senden, ist pressed – der Knopf wurde gedrückt.