There are different types of widgets in Gtk, depending on how
many children they can contain:
- no children - normal widgets
- exactly one child widget: bin
- two or more child widgets: container
The base widget you will begin your programs with (in most
cases) is the GtkWindow, a bin. That
means it can have only one child. So what now - one widget is a
bit sparse for an application. The solution are the containers,
of which you choose one and add that to the window. To that
container, you can either add some widgets or even more containers.
That gives you the ability to nest containers and get exactly that
layout you have in your mind.
The different containers like GtkHBox,
GtkVBox, GtkTable and
GtkFixed behave different in the way they layout
and arrange widgets. Each one suits a certain purpose and need to be
combined to achieve advanced layouts.