Spec-Zone.ru › GTK 4.0

GtkLayoutManager

GtkLayoutManager — Базовый класс для менеджера компоновки

Функции

void gtk_layout_manager_measure ()
void gtk_layout_manager_allocate ()
GtkSizeRequestMode gtk_layout_manager_get_request_mode ()
GtkWidget * gtk_layout_manager_get_widget ()
GtkLayoutChild * gtk_layout_manager_get_layout_child ()
void gtk_layout_manager_layout_changed ()

Типы и значения

GtkLayoutManager
struct GtkLayoutManagerClass

Иерархия объектов

    GObject
    ╰── GtkLayoutManager
        ├── GtkBinLayout
        ├── GtkBoxLayout
        ├── GtkCenterLayout
        ├── GtkConstraintLayout
        ├── GtkCustomLayout
        ├── GtkFixedLayout
        ├── GtkGridLayout
        ╰── GtkOverlayLayout

Файлы заголовков

#include <gtk/gtk.h>

Описание

Менеджеры компоновки — это делегаты, которые обрабатывают предпочтительный размер и размещение виджета контейнера.

Как правило, вы наследуете от GtkLayoutManager, если хотите реализовать политику компоновки для дочерних виджетов или определить размер виджета в зависимости от его содержимого.

Каждый GtkWidget может иметь только один экземпляр GtkLayoutManager в любой момент времени; однако, возможно заменить экземпляр менеджера компоновки с помощью gtk_widget_set_layout_manager().

Свойства компоновки

Менеджер компоновки может экспонировать свойства для управления компоновкой каждого дочернего элемента, создав тип объекта, производный от GtkLayoutChild, и установив свойства на нём как обычные свойства GObject.

Каждый экземпляр GtkLayoutChild, хранящий свойства компоновки для конкретного дочернего элемента, создаётся с помощью метода gtk_layout_manager_get_layout_child(); GtkLayoutManager управляет созданием своих экземпляров GtkLayoutChild путём переопределения виртуальной функции GtkLayoutManagerClass.create_layout_child(). Типичная реализация выглядит следующим образом:

static GtkLayoutChild *
create_layout_child (GtkLayoutManager *manager,
                     GtkWidget        *container,
                     GtkWidget        *child)
{
  return g_object_new (your_layout_child_get_type (),
                       "layout-manager", manager,
                       "child-widget", child,
                       NULL);
}

Свойства “layout-manager” и “child-widget” в созданном экземпляре GtkLayoutChild обязательны. GtkLayoutManager будет кэшировать созданный экземпляр GtkLayoutChild до тех пор, пока виджет не будет удалён из своего родителя или родитель не удалит менеджер компоновки.

Каждый экземпляр GtkLayoutManager, создающий GtkLayoutChild, должен использовать gtk_layout_manager_get_layout_child() каждый раз, когда ему нужно получить свойства компоновки; каждый экземпляр GtkLayoutChild должен вызывать gtk_layout_manager_layout_changed() каждый раз, когда свойство обновляется, чтобы поставить в очередь новое измерение размера и размещение.

Функции

gtk_layout_manager_measure ()

void
gtk_layout_manager_measure (GtkLayoutManager *manager,
                            GtkWidget *widget,
                            GtkOrientation orientation,
                            int for_size,
                            int *minimum,
                            int *natural,
                            int *minimum_baseline,
                            int *natural_baseline);

Измеряет размер widget с помощью manager для заданного orientation и размера.

Дополнительные сведения см. в разделе управления геометрией GtkWidget.

Параметры

manager

a GtkLayoutManager

widget

the GtkWidget, использующий manager

orientation

направление измерения

for_size

Размер для противоположного orientation; например, если orientation - GTK_ORIENTATION_HORIZONTAL, это высота виджета; если orientation - GTK_ORIENTATION_VERTICAL, это ширина виджета. Это позволяет измерить высоту для заданной ширины и ширину для заданной высоты. Используйте -1, если размер неизвестен

minimum

минимальный размер для заданного размера и направления.

[out][optional]

natural

естественный или предпочтительный размер для заданного размера и направления.

[out][optional]

minimum_baseline

положение базовой линии для минимального размера.

[out][optional]

natural_baseline

положение базовой линии для естественного размера.

[out][optional]

gtk_layout_manager_allocate ()

void
gtk_layout_manager_allocate (GtkLayoutManager *manager,
                             GtkWidget *widget,
                             int width,
                             int height,
                             int baseline);

Эта функция назначает заданную width, height и baseline для widget и вычисляет положение и размеры дочерних элементов widget, используя политику управления макетом manager.

Параметры

manager

a GtkLayoutManager

widget

the GtkWidget, использующий manager

width

новая ширина widget

height

новая высота widget

baseline

положение базовой линии widget или -1

gtk_layout_manager_get_request_mode ()

GtkSizeRequestMode
gtk_layout_manager_get_request_mode (GtkLayoutManager *manager);

Возвращает режим запроса manager.

Параметры

manager

a GtkLayoutManager

Возвращаемое значение

a GtkSizeRequestMode

gtk_layout_manager_get_widget ()

GtkWidget *
gtk_layout_manager_get_widget (GtkLayoutManager *manager);

Возвращает GtkWidget, использующий заданный GtkLayoutManager.

Параметры

manager

a GtkLayoutManager

Возвращаемое значение

a GtkWidget.

[transfer none][nullable]

gtk_layout_manager_get_layout_child ()

GtkLayoutChild *
gtk_layout_manager_get_layout_child (GtkLayoutManager *manager,
                                     GtkWidget *child);

Возвращает экземпляр GtkLayoutChild для GtkLayoutManager, создавая его при необходимости.

Виджет child должен быть дочерним элементом виджета, использующего manager.

Экземпляр GtkLayoutChild принадлежит GtkLayoutManager и гарантированно существует, пока child является дочерним элементом GtkWidget, использующим данный GtkLayoutManager.

Параметры

manager

a GtkLayoutManager

child

a GtkWidget

Возвращаемое значение

a GtkLayoutChild.

[transfer none]

gtk_layout_manager_layout_changed ()

void
gtk_layout_manager_layout_changed (GtkLayoutManager *manager);

Очередь изменения размера GtkWidget, использующего manager, если таковое имеется.

Эта функция должна вызываться подклассами GtkLayoutManager в ответ на изменения в их политике управления макетом.

Параметры

manager

a GtkLayoutManager

Типы и значения

GtkLayoutManager

typedef struct _GtkLayoutManager GtkLayoutManager;

struct GtkLayoutManagerClass

struct GtkLayoutManagerClass {
  GtkSizeRequestMode (* get_request_mode)    (GtkLayoutManager *manager,
                                              GtkWidget        *widget);

  void               (* measure)             (GtkLayoutManager *manager,
                                              GtkWidget        *widget,
                                              GtkOrientation    orientation,
                                              int               for_size,
                                              int              *minimum,
                                              int              *natural,
                                              int              *minimum_baseline,
                                              int              *natural_baseline);

  void               (* allocate)            (GtkLayoutManager *manager,
                                              GtkWidget        *widget,
                                              int               width,
                                              int               height,
                                              int               baseline);

  GType              layout_child_type;

  /**
   * GtkLayoutManagerClass::create_layout_child:
   * @manager: the #GtkLayoutManager
   * @widget: the widget using the @manager
   * @for_child: the child of @widget
   *
   * Create a #GtkLayoutChild instance for the given @for_child widget.
   *
   * Returns: (transfer full): a #GtkLayoutChild
   */
  GtkLayoutChild *   (* create_layout_child) (GtkLayoutManager *manager,
                                              GtkWidget        *widget,
                                              GtkWidget        *for_child);

  void               (* root)                (GtkLayoutManager *manager);
  void               (* unroot)              (GtkLayoutManager *manager);
};

Структура GtkLayoutManagerClass содержит только приватные данные и должна использоваться только через предоставленный API или при наследовании от GtkLayoutManager.

Члены

get_request_mode ()

виртуальная функция, используемая для возвращения предпочтительного режима запроса для менеджера макета; например, «ширина для высоты» или «высота для ширины»; см. GtkSizeRequestMode

measure ()

виртуальная функция, используемая для измерения минимальных и предпочтительных размеров виджета с использованием менеджера макета для заданной ориентации

allocate ()

виртуальная функция, используемая для распределения размера виджета с использованием менеджера макета

GType layout_child_type;

тип GtkLayoutChild, используемого этим менеджером макета

create_layout_child ()

виртуальная функция, используемая для создания метаобъекта GtkLayoutChild для свойств макета

root ()

виртуальная функция, вызываемая при присоединении виджета, использующего менеджер макета, к GtkRoot

unroot ()

виртуальная функция, вызываемая при отделении виджета, использующего менеджер макета, от GtkRoot

© 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/GtkLayoutManager.html

Spec-Zone.ru

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