Spec-Zone.ru › GTK 3.20

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>, по одному для каждого участника группы размеров. Атрибут «имя» задаёт идентификатор виджета.

Пример фрагмента определения пользовательского интерфейса с 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API