GtkOverlay
GtkOverlay — Контейнер, который накладывает виджеты друг на друга
Функции
| GtkWidget * | gtk_overlay_new () |
| void | gtk_overlay_set_child () |
| GtkWidget * | gtk_overlay_get_child () |
| void | gtk_overlay_add_overlay () |
| void | gtk_overlay_remove_overlay () |
| gboolean | gtk_overlay_get_measure_overlay () |
| void | gtk_overlay_set_measure_overlay () |
| gboolean | gtk_overlay_get_clip_overlay () |
| void | gtk_overlay_set_clip_overlay () |
Сигналы
| gboolean | get-child-position | Выполняется последним |
Типы и значения
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkOverlay
Реализованные интерфейсы
GtkOverlay реализует GtkAccessible, GtkBuildable и GtkConstraintTarget.
Включения
#include <gtk/gtk.h>
Описание
GtkOverlay — это контейнер, который содержит один главный дочерний элемент, поверх которого он может разместить «наложение» виджетов. Позиция каждого наложенного виджета определяется его свойствами “halign” и “valign”. Например, виджет с обоими выравниваниями, установленными на GTK_ALIGN_START, будет размещен в верхнем левом углу контейнера GtkOverlay, в то время как наложение с halign, установленным на GTK_ALIGN_CENTER, и valign, установленным на GTK_ALIGN_END, будет расположено на нижнем краю GtkOverlay, по горизонтали по центру. Положение можно настроить, задав поля отступа дочернего элемента отличными от нуля.
Более сложная позиционирование наложений возможна с помощью подключения к сигналу “get-child-position”.
Минимальные и естественные размеры наложения — это размеры его главного дочернего элемента. Размеры наложенных дочерних элементов не учитываются при измерении этих предпочтительных размеров.
GtkOverlay как GtkBuildable
Реализация GtkOverlay интерфейса GtkBuildable поддерживает размещение дочернего элемента в качестве наложения путем указания «overlay» в качестве атрибута «type» элемента <child>.
Узлы CSS
GtkOverlay имеет один узел CSS с именем «overlay». Наложенные дочерние элементы, чье выравнивание приводит к размещению их на краю, получают классы стилей «.left», «.right», «.top» и/или «.bottom» в зависимости от их позиции.
Функции
gtk_overlay_new ()
GtkWidget *
gtk_overlay_new (void); Создаёт новый GtkOverlay.
Возвращает
новый объект GtkOverlay.
gtk_overlay_set_child ()
void gtk_overlay_set_child (GtkOverlay *overlay,GtkWidget *child);
Устанавливает дочерний виджет для overlay .
Параметры
overlay | объект GtkOverlay | |
child | дочерний виджет. | [allow-none] |
gtk_overlay_get_child ()
GtkWidget *
gtk_overlay_get_child (GtkOverlay *overlay); Получает дочерний виджет для overlay .
Параметры
overlay | объект GtkOverlay |
Возвращает
дочерний виджет для overlay .
[nullable][transfer none]
gtk_overlay_add_overlay ()
void gtk_overlay_add_overlay (GtkOverlay *overlay,GtkWidget *widget);
Добавляет widget к overlay .
Виджет будет размещён поверх основного виджета, добавленного с помощью gtk_overlay_set_child().
Положение widget определяется его свойствами “halign” и “valign”.
Параметры
overlay | объект GtkOverlay | |
widget | виджет GtkWidget, который необходимо добавить в контейнер |
gtk_overlay_remove_overlay ()
void gtk_overlay_remove_overlay (GtkOverlay *overlay,GtkWidget *widget);
Удаляет наложение, добавленное с помощью gtk_overlay_add_overlay().
Параметры
overlay | объект GtkOverlay | |
widget | виджет GtkWidget, который необходимо удалить |
gtk_overlay_get_measure_overlay ()
gboolean gtk_overlay_get_measure_overlay (GtkOverlay *overlay,GtkWidget *widget);
Получает, включён ли размер widget в вычисление размера overlay .
Параметры
overlay | объект GtkOverlay | |
widget | дочерний виджет GtkOverlay |
Возвращает
включён ли виджет в вычисление размера
gtk_overlay_set_measure_overlay ()
void gtk_overlay_set_measure_overlay (GtkOverlay *overlay,GtkWidget *widget,gboolean measure);
Устанавливает, включён ли widget в вычисление размера overlay .
Наложение запросит размер самого большого дочернего виджета, для которого это свойство установлено в TRUE. Виджеты, которые не включены, могут быть нарисованы вне области overlay, если они слишком велики.
Параметры
overlay | объект GtkOverlay | |
widget | дочерний виджет GtkOverlay | |
measure | включать ли виджет в вычисление размера |
gtk_overlay_get_clip_overlay ()
gboolean gtk_overlay_get_clip_overlay (GtkOverlay *overlay,GtkWidget *widget);
Получает, должен ли widget быть обрезано в родительском элементе.
Параметры
overlay | объект GtkOverlay | |
widget | дочерний виджет GtkOverlay |
Возвращает
нужно ли обрезать виджет в родительском элементе.
gtk_overlay_set_clip_overlay ()
void gtk_overlay_set_clip_overlay (GtkOverlay *overlay,GtkWidget *widget,gboolean clip_overlay);
Устанавливает, должен ли widget быть обрезано в родительском элементе.
Параметры
overlay | объект GtkOverlay | |
widget | дочерний виджет GtkOverlay | |
clip_overlay | обрезать ли виджет |
Типы и значения
GtkOverlay
typedef struct _GtkOverlay GtkOverlay;
Подробности свойств
Подробности сигналов
Сигнал “get-child-position”
gboolean user_function (GtkOverlay *overlay, GtkWidget *widget, GdkRectangle *allocation, gpointer user_data)
Сигнал ::get-child-position вызывается для определения позиции и размера дочерних виджетов наложения. Обработчик этого сигнала должен заполнить allocation желаемой позицией и размером для widget , относительно основного дочернего виджета overlay .
По умолчанию обработчик этого сигнала использует свойства widget halign и valign для определения позиции и задаёт виджету его естественный размер (за исключением того, что выравнивание GTK_ALIGN_FILL приведет к тому, что наложение заполнит всю ширину/высоту). Если основной дочерний виджет является GtkScrolledWindow, наложения размещаются относительно его содержимого.
Параметры
overlay | объект GtkOverlay | |
widget | дочерний виджет для позиционирования | |
allocation | место назначения для возвращаемой области. | [type Gdk.Rectangle][out caller-allocates] |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Возвращает
TRUE если allocation был заполнен
Флаги: Выполняется последним
© 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/GtkOverlay.html