GtkBox управляет строкой (GtkHBox) или столбцом (GtkVBox) виджетов. В GtkHBox всем виджетам присвоена одинаковая высота; задача блока заключается в том, чтобы распределить доступную ширину между ними. GtkHBox опционально использует некоторую доступную ширину для вставки промежутков (называемых заполнителями) между виджетами. GtkVBox аналогичен GtkHBox, но в другом направлении (то есть он распределяет доступную высоту, а не ширину). GtkBox -- абстрактный базовый класс; GtkHBox и GtkVBox могут быть почти польностью использованы через его интерфейс. Блоки -- самые используемые контейнеры.
Для создания GtkBox вы должны воспользоваться одним из конструкторов, приведенных в списке функций 3..1 и 3..2. Функции-конструкторы блока принимают два параметра. Если homogeneous равен TRUE, это значит, что все дети блока будут распределены с равным размером. spacing определяет размер пробела между каждым из детей. Существуют функции для изменение промежутка и равномерности после создания блока.
GtkWidget *gtk_hbox_new(gboolean homogeneous, gint spacing)
GtkWidget *gtk_vbox_new(gboolean homogeneous, gint spacing)
Есть две базовые функции для добавления ребенка в GtkBox; они показаны в списке функций 3..3.
void gtk_box_pack_start(GtkBox *box, GtkWidget *child,
gboolean expand, gboolean fill, gint padding)
void gtk_box_pack_end(GtkBox *box, GtkWidget *child,
gboolean expand, gboolean fill, gint padding)
Блок может содержать два набора виджетов. Первый набор упакован в начале (вверху или слева) блока; второй упакован в конце (внизу или справа). Если вы упакуете три виджета в начало блока, первый упакованный вами виджет окажется самым верхним или левым; второй последует за первым; а третий окажется самым ближайшим к центру блока. Если вы затем упакуете три виджета в конец того же блока, первый из них появится самым нижним или правым; второй последует за ним, а третий появится ближе всех к центру. После упаковки всех шести виджетов, порядок сверху/слева вниз/направо будет таким: 1, 2, 3, 3, 2, 1. Рисунок 3..2 показывает его для GtkVBox.