вставляет виджеты, начиная от левого края контейнера
GtkHBox
и нижнего края контейнера
GtkVBox
; функция
gtk_box_pack_end
, наоборот, начинает от правого и верхнего краев контейнера. Параметры функций управляют расстоянием между виджетами и форматом каждого виджета, находящегося в упаковочном контейнере.
В табл. 16.1 описаны параметры, которые вы можете передавать в функцию
gtk_box_pack_start
или
gtk_box_pack_end
.
Таблица 16.1
Параметр
Описание
GtkBox *box
Заполняемый упаковочный контейнер
GtkWidget *child
Виджет, который следует поместить в упаковочный контейнер
gboolean expand
Если равен
TRUE
, данный виджет занимает все доступное пространство, используемое совместно с другими виджетами, у которых этот флаг также равен
TRUE
gboolean fill
Если равен
TRUE
, данный виджет будет занимать всю доступную площадь вместо использования ее как отступа от краев. Действует, только если флаг
expand
равен
TRUE
guint padding
Размер отступа вокруг виджета в пикселах
Давайте теперь рассмотрим эти виджеты упаковочных контейнеров и создадим более сложный пользовательский интерфейс, демонстрирующий вложенные упаковочные контейнеры (упражнение 16.3).
Упражнение 16.3. Макет виджета-контейнера
В этом примере вы спланируете размещение нескольких простых виджетов-меток типа
GtkLabel
с помощью контейнеров типа
GtkHBox
и
GtkVBox
. Виджеты-метки — простые графические элементы, подходящие для вывода коротких текстовых фрагментов. Назовите эту программу container.c:
#include <gtk/gtk.h>
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit;
}
/*
Обратный вызов позволяет приложению отменить событие