GtkLayoutManager
GtkLayoutManager — Базовый класс для менеджера компоновки
Функции
Типы и значения
Иерархия объектов
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 | ||
widget | the GtkWidget, использующий | |
orientation | направление измерения | |
for_size | Размер для противоположного | |
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 | ||
widget | the GtkWidget, использующий | |
width | новая ширина | |
height | новая высота | |
baseline | положение базовой линии |
gtk_layout_manager_get_request_mode ()
GtkSizeRequestMode
gtk_layout_manager_get_request_mode (GtkLayoutManager *manager); Возвращает режим запроса manager.
Параметры
manager |
Возвращаемое значение
gtk_layout_manager_get_widget ()
GtkWidget *
gtk_layout_manager_get_widget (GtkLayoutManager *manager); Возвращает GtkWidget, использующий заданный GtkLayoutManager.
Параметры
manager |
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 | ||
child |
gtk_layout_manager_layout_changed ()
void
gtk_layout_manager_layout_changed (GtkLayoutManager *manager); Очередь изменения размера GtkWidget, использующего manager, если таковое имеется.
Эта функция должна вызываться подклассами GtkLayoutManager в ответ на изменения в их политике управления макетом.
Параметры
manager |
Типы и значения
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.
Члены
| виртуальная функция, используемая для возвращения предпочтительного режима запроса для менеджера макета; например, «ширина для высоты» или «высота для ширины»; см. GtkSizeRequestMode | |
| виртуальная функция, используемая для измерения минимальных и предпочтительных размеров виджета с использованием менеджера макета для заданной ориентации | |
| виртуальная функция, используемая для распределения размера виджета с использованием менеджера макета | |
GType | тип GtkLayoutChild, используемого этим менеджером макета | |
| виртуальная функция, используемая для создания метаобъекта GtkLayoutChild для свойств макета | |
| виртуальная функция, вызываемая при присоединении виджета, использующего менеджер макета, к GtkRoot | |
| виртуальная функция, вызываемая при отделении виджета, использующего менеджер макета, от 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