The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

GTK+ 2.0 Tutorial

<<< Previous

Packing Widgets

Next >>>


Упаковка с использованием таблиц

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

Используя таблицы, мы создаем сетку, в которую можем поместить виджеты. Виджеты могут занимать так много места, сколько мы определим.

Первое, что мы рассмотрим будет функция gtk_table_new():

GtkWidget *gtk_table_new( guint    rows,
                              guint    columns,
                              gboolean homogeneous );

Первый аргумент задаёт кол-во строк в таблице, а второй соответственно кол-во столбцов.

Аргумент homogeneous выполняет тоже, что и в контейнерах - задаёт размер. Если homogeneous равно TRUE, ячейки таблицы расширяются до значения самого большого виджета. Если homogeneous равно FALSE, размер ячейки продиктован самой большой по высоте в этом ряду и самой широкой в этом столбце.

Столбцы и строки располагаются от 0 до n, где n определено в вызове gtk_table_new. Если вы определили rows = 2 и columns = 2, то таблица будет выглядеть примерно так:

 0          1          2
0+----------+----------+
 |          |          |
1+----------+----------+
 |          |          |
2+----------+----------+

Заметьте, система координат начинается в верхнем левом углу.

Для размещения виджета в ячейке используйте следующую функцию:

void gtk_table_attach( GtkTable         *table,
                           GtkWidget        *child,
                           guint            left_attach,
                           guint            right_attach,
                           guint            top_attach,
                           guint            bottom_attach,
                           GtkAttachOptions xoptions,
                           GtkAttachOptions yoptions,
                           guint            xpadding,
                           guint            ypadding );

Первый аргумент таблица ("table") которую вы создали, а второй виджет ("child") который вы хотите разместить в таблице.

Остальные аргументы определяют место расположения виджета в ячейке и то, сколько ячеек использовать. Если вы хотите разместить кнопку в правом нижнем углу в выше указанной таблице 2х2 и чтобы она занимала все пространство, то left_attach would be = 1, right_attach = 2, top_attach = 1, bottom_attach = 2.

Если понадобится расположить кнопку в верхней строчки на обе ячейки, то нужно использовать следующие аргументы left_attach = 0, right_attach = 2, top_attach = 0, bottom_attach = 1.

Аргументы xoptions и yoptions используются для специфических опций упаковки.

Вот эти опции:

GTK_FILL
Если ячейка таблицы больше виджета и определён GTK_FILL, то виджет увеличится до размера ячейки.
GTK_SHRINK
Если таблица меньше пространства отведенного для виджетов (когда пользователь изменяет размер окна), то виджеты обычно будут просто исчезать из окна. Если определить GTK_SHRINK, то виджеты будут сжиматься вместе с таблицей.
GTK_EXPAND
Данная опция заставит таблицу заполнить всё свободное пространство в окне.

Аргументы xpadding и ypadding используются для выделения свободного пространства вокруг виджетов в пикселях (pixels).

gtk_table_attach() имеет много вариантов. Например сокращенный:

void gtk_table_attach_defaults( GtkTable  *table,
                                GtkWidget *widget,
                                guint      left_attach,
                                guint      right_attach,
                                guint      top_attach,
                                guint      bottom_attach );

Опции X и Y в данном случае установлены по умолчанию в GTK_FILL | GTK_EXPAND, а xpadding и ypadding равны 0. Остальная часть аргументов идентична предыдущей функции.

Также есть функции gtk_table_set_row_spacing() и gtk_table_set_col_spacing(), устанавливающие интервал между рядами или столбцами.

void gtk_table_set_row_spacing( GtkTable *table,
                                guint     row,
                                guint     spacing );

и

void gtk_table_set_col_spacing ( GtkTable *table,
                                 guint     column,
                                 guint     spacing );

Обратите внимание на то, что промежуток устанавливается справа для столбцов и снизу для рядов.

Вы можете также установить последовательный интервал всех рядов и/или колонок:

void gtk_table_set_row_spacings( GtkTable *table,
                                 guint    spacing );

и

void gtk_table_set_col_spacings( GtkTable *table,
                                 guint     spacing );

Заметьте, что последний ряд и последний столбец не получают никакого интервала.


<<< Previous

Home

Next >>>

Packing Demonstration Program

Up

Table Packing Example






Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру