Lo que haces es dividir la ventana en cajas. Si quieres poner, una caja de texto y un botón harás algo así (con dibujos conceptuales + código C):
* Lo primero creas la ventana, y, tendrías:
GtkWidget *w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+-------------------+
| |
| |
| |
| |
| |
| |
| |
+-------------------+
* Luego creas los widgets, un botón y una caja de texto.
* Además, creas una vbox (el 2 no es el número de posiciones, no hace falta especificarlo).
* La ventana también es un container de una posición así que añades el vbox a la ventana:
GtkWidget *box = gtk_vbox_new(FALSE, 2);
GtkWidget *t = gtk_text_view_new();
GtkWidget *b = gtk_button_new_with_label("Oh Hai!");
gtk_container_add(GTK_CONTAINER(w), box);
+-------------------+
| |
| |
| |
+-------------------+
| |
| |
| |
+-------------------+
* Lo siguiente es usar las funciones para añadir elementos a una caja, por ejemplo, podemos añadirlos desde arriba hacia abajo:
gtk_box_pack_start(GTK_BOX(box), t, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(box), b, TRUE, TRUE, 0);
+-------------------+
| |
| CAJA TEXTO |
| |
+-------------------+
| |
| BOTÓN |
| |
+-------------------+
Piensa que puedes meter una HBox dentro de una posición de una VBox y así, poco a poco, ir modelando tu interfaz.
Si, los dibujos son gilipollescos... pero, por alguna razón, a mi me ayudaron a que Gtk hiciera 'click' en mi cabeza
- ferdy