GtkSizeGroup
GtkSizeGroup — Группирование виджетов для запроса одинакового размера
Функции
| GtkSizeGroup * | gtk_size_group_new () |
| void | gtk_size_group_set_mode () |
| GtkSizeGroupMode | gtk_size_group_get_mode () |
| void | gtk_size_group_add_widget () |
| void | gtk_size_group_remove_widget () |
| GSList * | gtk_size_group_get_widgets () |
Свойства
| 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>, по одному на каждого члена группы размеров. Атрибут "name" задает идентификатор виджета.
Пример фрагмента определения пользовательского интерфейса с GtkSizeGroup:
<object class="GtkSizeGroup">
<property name="mode">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_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]
Типы и значения
struct GtkSizeGroup
struct GtkSizeGroup;
перечисление GtkSizeGroupMode
Режим группы размеров определяет направления, в которых группа размеров влияет на запрошенные размеры её составляющих виджетов.
Члены
GTK_SIZE_GROUP_NONE | группа не оказывает влияния | |
GTK_SIZE_GROUP_HORIZONTAL | группа влияет на горизонтальный запрос | |
GTK_SIZE_GROUP_VERTICAL | группа влияет на вертикальный запрос | |
GTK_SIZE_GROUP_BOTH | группа влияет на горизонтальный и вертикальный запросы |
Подробное описание свойств
Свойство “mode”
“mode” GtkSizeGroupMode
Направления, в которых группа размеров влияет на запрошенные размеры её составляющих виджетов.
Владелец: GtkSizeGroup
Флаги: Чтение / Запись
Значение по умолчанию: GTK_SIZE_GROUP_HORIZONTAL
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkSizeGroup.html