Spec-Zone.ru › GTK 3.22

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;

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

Флаги: Чтение / Запись

Значение по умолчанию: 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.22/GtkSizeGroup.html

Spec-Zone.ru

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