GtkSizeGroup
GtkSizeGroup — Группировка виджетов для запроса одинакового размера
Функции
| GtkSizeGroup * | gtk_size_group_new () |
| void | gtk_size_group_set_mode () |
| GtkSizeGroupMode | gtk_size_group_get_mode () |
| void | gtk_size_group_set_ignore_hidden () |
| gboolean | gtk_size_group_get_ignore_hidden () |
| void | gtk_size_group_add_widget () |
| void | gtk_size_group_remove_widget () |
| GSList * | gtk_size_group_get_widgets () |
Свойства
| 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>, по одному для каждого члена группы размеров. Атрибут «name» задает идентификатор виджета.
Пример фрагмента определения пользовательского интерфейса с 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);
gtk_size_group_set_ignore_hidden устарела начиная с версии 3.22 и не должна использоваться в новом коде.
Измерение размера скрытых виджетов долгое время не работало надёжно. В большинстве случаев они сейчас сообщают размер 0, поэтому их размер не влияет на другие члены группы размеров. По сути, группы размеров всегда работают так, как если бы этот параметр был TRUE. Используйте GtkStack вместо этого, чтобы скрыть виджеты, но при этом учитывать их размер.
Устанавливает, нужно ли игнорировать неотображённые виджеты при вычислении размера.
Параметры
size_group | группа размеров GtkSizeGroup | |
ignore_hidden | игнорировать ли неотображённые виджеты при вычислении размера |
С: 2.8
gtk_size_group_get_ignore_hidden ()
gboolean
gtk_size_group_get_ignore_hidden (GtkSizeGroup *size_group); gtk_size_group_get_ignore_hidden устарела начиная с версии 3.22 и не должна использоваться в новом коде.
Измерение размера скрытых виджетов долгое время не работало надёжно. В большинстве случаев они сейчас сообщают размер 0, поэтому их размер не влияет на другие члены группы размеров. По сути, группы размеров всегда работают так, как если бы этот параметр был TRUE. Используйте GtkStack вместо этого, чтобы скрыть виджеты, но при этом учитывать их размер.
Возвращает, игнорируются ли невидимые виджеты при вычислении размера.
Параметры
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;
enum GtkSizeGroupMode
Режим группы размеров определяет направления, по которым группа размеров влияет на запрашиваемые размеры её составных виджетов.
Члены
GTK_SIZE_GROUP_NONE | группа не оказывает влияния | |
GTK_SIZE_GROUP_HORIZONTAL | группа влияет на горизонтальные требования | |
GTK_SIZE_GROUP_VERTICAL | группа влияет на вертикальные требования | |
GTK_SIZE_GROUP_BOTH | группа влияет на горизонтальные и вертикальные требования |
Подробное описание свойств
Свойство “ignore-hidden”
“ignore-hidden” gboolean
Если TRUE, неотображенные виджеты игнорируются при определении размера группы.
GtkSizeGroup:ignore-hidden устарело с версии 3.22 и не должно использоваться в новом коде.
Измерение размера скрытых виджетов долгое время не работало надёжно. В большинстве случаев сейчас они сообщают размер 0, и, следовательно, их размер не повлияет на других членов группы размеров. Фактически, группы размеров всегда будут работать так, как если бы это свойство было TRUE. Используйте GtkStack вместо этого, чтобы скрыть виджеты, но при этом учитывать их размер.
Владелец: GtkSizeGroup
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.8
Свойство “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.gnome.org/gtk3/3.24/GtkSizeGroup.html