GTK+ 2.0 Tutorial

<<< Previous

Next >>>


Упаковочные виджеты (Packing Widgets)

При создании графических интерфейсов необходимо размещать большое кол-во виджетов внутри диалоговых окон. Первый пример helloworld имел только один виджет, поэтому мы могли использовать вызов gtk_container_add() для размещения его внутри окна. Когда вам понадобится размещать в окне больше одного виджета, нужно будет каким-то образом контролировать их расположение. Для этого и нужны упаковочные контейнеры.

Теория упаковочных контейнеров (Packing Boxes)

Существует два вида упаковочных невидимых контейнеров для размещения виджетов, горизонтальный и вертикальный. Когда используется горизонтальный контейнер, объекты внутри него могут располагаться с права налево, или наоборот в зависимости от использованных вызовов. В вертикальном контейнере виджеты располагаются сверху вниз или снизу вверх. Вы можете использовать любые комбинации расположения контейнеров (рядом, внутри), для достижения желаемого результата.

Для создания нового горизонтального контейнера используется вызов gtk_hbox_new(), а для вертикального gtk_vbox_new(). Функции gtk_box_pack_start() и gtk_box_pack_end() используются для размещения объектов внутри этих контейнеров. Функция gtk_box_pack_start() размещает объекты сверху вниз в вертикальных контейнерах и слева на право в горизонтальных, а функция. gtk_box_pack_end() соответственно снизу вверх и справа на лево. Эти функции позволяют нам использовать правое или левое, а также верхнее или нижнее выравнивание виджетов и даже смешанное для достижения необходимого результата. В большинстве примеров мы используем gtk_box_pack_start(). Любой объект или виджет может выступать в роли контейнера. Кнопка фактически тоже является контейнером, но мы размещаем в ней только надпись для обозначения.

При использовании этих вызовов, GTK узнаёт где размещаются ваши виджеты и может автоматически регулировать размер, а также выполнять другие полезные действия. Есть и другие методы упаковки ваших виджетов, если вы думаете что данный метод даёт слишком мало гибкости при создании и размещении виджетов.


<<< Previous

Home

Next >>>

An Upgraded Hello World

 

Details of Boxes