The OpenNET Project
 
Поиск (ключи):  ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
ССЫЛКИ НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

GTK+ 2.0 Tutorial

<<< Previous

Packing Widgets

Next >>>


Детально о контейнерах

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

Каждая линия содержит горизонтальный контейнер (hbox) который содержит кнопки. Вызов gtk_box_pack упаковывает кнопки в контейнер hbox. Каждая кнопка упакованная в hbox имеет одинаковые аргументы для функции gtk_box_pack_start().

Вот объявление gtk_box_pack_start() функции.

void gtk_box_pack_start( GtkBox    *box,
                             GtkWidget *child,
                             gboolean  expand,
                             gboolean  fill,
                             guint     padding );

Первый аргумент - это контейнер в который упаковывается объект обозначенный вторым аргументом. Все кнопки будут объектами, которые мы упаковываем в контейнеры.

Расширяющие аргументы в gtk_box_pack_start() и gtk_box_pack_end() контролируют размер пространства которое занимает контейнер или виджет в контейнере, если (TRUE) то заполняется всё доступное пространство; или (FALSE), тогда контейнер сжимается до уровня необходимого для вмещения виджетов. Установка расширения в FALSE оправдана при правом и левом выравнивании виджетов. Иначе они растянутся на всю ширину контейнера, а такой же эффект можно получить при использовании gtk_box_pack_start() или gtk_box_pack_end().

Аргумент заполнения в функции gtk_box_pack контролирует, выделено ли дополнительное место для расширения объектов (TRUE), или как дополнительное пространство для объекта (FALSE). Это имеет смысл, только если расширяющий аргумент равен TRUE.

Новый контейнер создаётся примерно так:

GtkWidget *gtk_hbox_new ( gboolean homogeneous,
                              gint     spacing );

Аргумент homogeneous в gtk_hbox_new() (и некоторые для gtk_vbox_new()) контролирует равноценность размеров объектов в контейнерах (т.е., одинаковую ширину в hbox, или одинаковую высоту в vbox). Если он установлен, то расширяющий аргумент всегда включен в шаблон функции gtk_box_pack().

Свободное пространство добавляется перед объектами и вокруг них. Следующий пример объясняет это:

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


<<< Previous

Home

Next >>>

Packing Widgets

Up

Packing Demonstration Program




Подпишись на Linux Format и получи один из 3 ценных призов!

Началась подписка на журнал Linux Format на 2010 год. Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!

Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за 2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF. Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь, пока вам доставят бумажную версию.

Кроме того, все, оформившие подписку на первую половину или весь 2010 год в интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов:


  Закладки на сайте
  Проследить за страницей
Created 1996-2010 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList