GtkSizeGroup
GtkSizeGroup — Группирование виджетов для запроса одинакового размера
Функции
Свойства
| gboolean | ignore-hidden | Чтение/Запись |
| GtkSizeGroupMode | mode | Чтение/Запись |
Типы и значения
| struct | GtkSizeGroup |
| enum | GtkSizeGroupMode |
Иерархия объектов
GObject ╰── GtkSizeGroup
Реализованные интерфейсы
GtkSizeGroup реализует GtkBuildable.
Файлы заголовков
#include <gtk/gtk.h>
Описание
GtkSizeGroup предоставляет механизм для группирования нескольких виджетов вместе, чтобы они все запрашивали одинаковое количество места. Это обычно полезно, когда вам нужен столбец виджетов с одинаковым размером, но вы не можете использовать виджет GtkGrid.
Подробно, размер, запрашиваемый для каждого виджета в GtkSizeGroup, является максимальным из размеров, которые были бы запрошены для каждого виджета в группе размеров, если бы они не были в группе размеров. Режим группы размеров (см. gtk_size_group_set_mode()) определяет, относится ли это к горизонтальному размеру, вертикальному размеру или обоим размерам.
Обратите внимание, что группы размеров влияют только на количество запрашиваемого места, а не на размер, который виджеты в конечном итоге получат. Если вы хотите, чтобы виджеты в GtkSizeGroup фактически имели одинаковый размер, вам нужно упаковать их таким образом, чтобы они получали запрашиваемый размер, а не больше. Например, если вы упаковываете свои виджеты в таблицу, вы бы не включали флаг GTK_FILL.
Объекты GtkSizeGroup ссылаются на каждый виджет в группе размеров, поэтому после добавления всех виджетов в GtkSizeGroup, вы можете удалить начальную ссылку на группу размеров с помощью g_object_unref(). Если виджеты в группе размеров впоследствии будут уничтожены, они будут удалены из группы размеров и отменят свои ссылки на группу размеров; когда все виджеты будут удалены, группа размеров будет освобождена.
Виджеты могут быть частью нескольких групп размеров; GTK+ будет вычислять горизонтальный размер виджета по горизонтали из всех виджетов, которые могут быть достигнуты от виджета цепочкой групп размеров типа GTK_SIZE_GROUP_HORIZONTAL или GTK_SIZE_GROUP_BOTH, а вертикальный размер — из вертикального запроса всех виджетов, которые могут быть достигнуты от виджета цепочкой групп размеров типа GTK_SIZE_GROUP_VERTICAL или GTK_SIZE_GROUP_BOTH.
Обратите внимание, что группы размеров учитывают только размеры виджетов без контекста (так как группы размеров не знают, какой размер виджет будет выделен в одном измерении, она не может вывести, какой высоты получит виджет для заданной ширины). При группировании виджетов, которые меняют высоту на ширину в режиме GTK_SIZE_GROUP_VERTICAL или GTK_SIZE_GROUP_BOTH: высота для минимальной ширины будет запрошенной высотой для всех виджетов в группе. То же самое, конечно, верно при горизонтальном группировании ширины для высоты виджетов.
Виджеты, которые меняют высоту на ширину, должны задать разумно большую минимальную ширину с помощью, например, “width-chars”. Виджетам со статическими размерами, а также виджетам, которые увеличиваются (например, обрезающий текст), такие соображения не нужны.
GtkSizeGroup как GtkBuildable
Группы размеров можно указать в определении пользовательского интерфейса, поместив элемент <object> с class="GtkSizeGroup" где-нибудь в определении пользовательского интерфейса. Виджеты, которые относятся к группе размеров, задаются элементом <widgets>, который может содержать несколько элементов <widget>, по одному для каждого участника группы размеров. Атрибут «имя» задаёт идентификатор виджета.
Пример фрагмента определения пользовательского интерфейса с GtkSizeGroup:
<object class="GtkSizeGroup"> <property name="mode">GTK_SIZE_GROUP_HORIZONTAL</property> <widgets> <widget name="radio1"/> <widget name="radio2"/> </widgets> </object>
Функции
gtk_size_group_new ()
GtkSizeGroup *
gtk_size_group_new (GtkSizeGroupMode mode); Создаёт новую группу размеров GtkSizeGroup.
Параметры
mode | режим новой группы размеров. |
Возвращаемое значение
новая созданная группа размеров GtkSizeGroup
gtk_size_group_set_mode ()
void gtk_size_group_set_mode (GtkSizeGroup *size_group,GtkSizeGroupMode mode);
Устанавливает GtkSizeGroupMode группы размеров. Режим группы размеров определяет, должны ли все виджеты в группе иметь одинаковую горизонтальную потребность (GTK_SIZE_GROUP_HORIZONTAL), одинаковую вертикальную потребность (GTK_SIZE_GROUP_VERTICAL) или одинаковую потребность в обоих направлениях (GTK_SIZE_GROUP_BOTH).
Параметры
size_group | группа размеров GtkSizeGroup | |
mode | режим, который нужно установить для группы размеров. |
gtk_size_group_get_mode ()
GtkSizeGroupMode
gtk_size_group_get_mode (GtkSizeGroup *size_group); Возвращает текущий режим группы размеров. См. gtk_size_group_set_mode().
Параметры
size_group | группа размеров GtkSizeGroup |
Возвращаемое значение
текущий режим группы размеров.
gtk_size_group_set_ignore_hidden ()
void gtk_size_group_set_ignore_hidden (GtkSizeGroup *size_group,gboolean ignore_hidden);
Устанавливает, нужно ли игнорировать неотображённые виджеты при расчёте размера.
Параметры
size_group | группа размеров GtkSizeGroup | |
ignore_hidden | игнорировать ли неотображённые виджеты при расчёте размера |
С: 2.8
gtk_size_group_get_ignore_hidden ()
gboolean
gtk_size_group_get_ignore_hidden (GtkSizeGroup *size_group); Возвращает, игнорируются ли невидимые виджеты при расчёте размера.
Параметры
size_group | группа размеров GtkSizeGroup |
Возвращаемое значение
TRUE, если невидимые виджеты игнорируются.
С: 2.8
gtk_size_group_add_widget ()
void gtk_size_group_add_widget (GtkSizeGroup *size_group,GtkWidget *widget);
Добавляет виджет в группу размеров GtkSizeGroup. В будущем, потребность виджета будет определяться как максимум его потребности и потребности других виджетов в группе размеров. Применимо ли это горизонтально, вертикально или в обоих направлениях зависит от режима группы размеров. См. gtk_size_group_set_mode().
Когда виджет уничтожен или больше нигде не ссылается, он будет удалён из группы размеров.
Параметры
size_group | группа размеров GtkSizeGroup | |
widget | виджет GtkWidget для добавления |
gtk_size_group_remove_widget ()
void gtk_size_group_remove_widget (GtkSizeGroup *size_group,GtkWidget *widget);
Удаляет виджет из группы размеров GtkSizeGroup.
Параметры
size_group | группа размеров GtkSizeGroup | |
widget | виджет GtkWidget для удаления |
gtk_size_group_get_widgets ()
GSList *
gtk_size_group_get_widgets (GtkSizeGroup *size_group); Возвращает список виджетов, связанных с size_group .
Параметры
size_group | группа размеров GtkSizeGroup |
Возвращаемое значение
список виджетов GSList. Список принадлежит GTK+ и не должен изменяться.
[element-type GtkWidget][transfer none]
С: 2.10
Типы и значения
struct GtkSizeGroup
struct GtkSizeGroup;
Перечисление GtkSizeGroupMode
Режим группы размеров определяет направления, в которых группа размеров влияет на запрошенные размеры её составляющих виджетов.
Члены
GTK_SIZE_GROUP_NONE | группа не оказывает влияния | |
GTK_SIZE_GROUP_HORIZONTAL | группа влияет на горизонтальную потребность | |
GTK_SIZE_GROUP_VERTICAL | группа влияет на вертикальную потребность | |
GTK_SIZE_GROUP_BOTH | группа влияет на горизонтальную и вертикальную потребность |
Подробное описание свойств
Свойство “ignore-hidden”
“ignore-hidden” gboolean
Если TRUE, неотображённые виджеты игнорируются при определении размера группы.
Флаги: чтение/запись
Значение по умолчанию: FALSE
С: 2.8
Свойство “mode”
“mode” GtkSizeGroupMode
Направления, в которых группа размеров влияет на запрошенные размеры её составляющих виджетов.
Флаги: чтение/запись
Значение по умолчанию: GTK_SIZE_GROUP_HORIZONTAL
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/GtkSizeGroup.html