Spec-Zone.ru › GTK 3.20

GtkOverlay

GtkOverlay — Контейнер, который накладывает виджеты друг на друга

Функции

GtkWidget * gtk_overlay_new ()
void gtk_overlay_add_overlay ()
void gtk_overlay_reorder_overlay ()
gboolean gtk_overlay_get_overlay_pass_through ()
void gtk_overlay_set_overlay_pass_through ()

Свойства дочерних элементов

gint индекс Чтение/Запись
gboolean пропускание Чтение/Запись

Сигналы

gboolean получение-позиции-дочернего-элемента Выполнение в последнюю очередь

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

struct GtkOverlay
struct GtkOverlayClass

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

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkBin
                    ╰── GtkOverlay

Реализованные интерфейсы

GtkOverlay реализует AtkImplementorIface и GtkBuildable.

Файлы включения

#include <gtk/gtk.h>

Описание

GtkOverlay — это контейнер, который содержит один главный дочерний элемент, поверх которого он может размещать виджеты-«наложения». Позиция каждого виджета-наложения определяется его свойствами “halign” и “valign”. Например, виджет с обоими выравниваниями, установленными в GTK_ALIGN_START, будет размещён в левом верхнем углу контейнера GtkOverlay, а наложение с halign, установленным в GTK_ALIGN_CENTER, и valign, установленным в GTK_ALIGN_END, будет расположено в нижней части GtkOverlay, по горизонтали по центру. Позицию можно скорректировать, установив свойства отступов дочернего элемента на значения, отличные от нуля.

Более сложные расположения наложений возможны, подключившись к сигналу “получение-позиции-дочернего-элемента”.

GtkOverlay как GtkBuildable

Реализация GtkOverlay интерфейса GtkBuildable поддерживает размещение дочернего элемента в качестве наложения, указав «overlay» в качестве атрибута «type» элемента <child>.

Функции

gtk_overlay_new ()

GtkWidget *
gtk_overlay_new (void);

Создаёт новый GtkOverlay.

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

новый объект GtkOverlay.

С: 3.2

gtk_overlay_add_overlay ()

void
gtk_overlay_add_overlay (GtkOverlay *overlay,
                         GtkWidget *widget);

Добавляет widget в overlay.

Виджет будет расположен поверх основного виджета, добавленного с помощью gtk_container_add().

Положение widget определяется его свойствами “halign” и “valign”.

Параметры

overlay

объект GtkOverlay

widget

GtkWidget, который будет добавлен в контейнер

С: 3.2

gtk_overlay_reorder_overlay ()

void
gtk_overlay_reorder_overlay (GtkOverlay *overlay,
                             GtkWidget *child,
                             gint position);

Перемещает child в новое index в списке overlay дочерних элементов. Список содержит наложения в порядке их добавления в overlay.

Индекс виджета в списке overlay дочерних элементов определяет порядок отрисовки дочерних элементов при перекрытии. Первый дочерний элемент рисуется снизу. Это также влияет на порядок фокуса по умолчанию.

Параметры

overlay

объект GtkOverlay

child

накладываемый GtkWidget, который нужно переместить

position

новый индекс child в списке дочерних элементов наложения overlay, начиная с 0. Если отрицательное, указывает конец списка

gtk_overlay_get_overlay_pass_through ()

gboolean
gtk_overlay_get_overlay_pass_through (GtkOverlay *overlay,
                                      GtkWidget *widget);

Функция-обёртка для получения значения свойства “pass-through” дочернего элемента widget.

Параметры

overlay

объект GtkOverlay

widget

дочерний элемент наложения GtkOverlay

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

будет ли виджет пропускать вход.

С: 3.18

gtk_overlay_set_overlay_pass_through ()

void
gtk_overlay_set_overlay_pass_through (GtkOverlay *overlay,
                                      GtkWidget *widget,
                                      gboolean pass_through);

Функция-обёртка для установки значения свойства “pass-through” дочернего элемента widget.

Параметры

overlay

объект GtkOverlay

widget

дочерний элемент наложения GtkOverlay

pass_through

должен ли дочерний элемент пропускать вход

С: 3.18

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

struct GtkOverlay

struct GtkOverlay;

struct GtkOverlayClass

struct GtkOverlayClass {
  GtkBinClass parent_class;


  gboolean (*get_child_position) (GtkOverlay    *overlay,
                                  GtkWidget     *widget,
                                  GtkAllocation *allocation);
};

Члены

get_child_position ()

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

Подробное описание свойств дочерних элементов

Свойство дочернего элемента “index”

  “index”                    gint

Индекс наложения в родительском элементе, -1 для основного дочернего элемента.

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

Допустимые значения: >= -1

Значение по умолчанию: 0

Свойство дочернего элемента “pass-through”

  “pass-through”             gboolean

Пропускать вход, не влияет на основной дочерний элемент.

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

Значение по умолчанию: FALSE

Подробное описание сигналов

Сигнал “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 был заполнен

Флаги: Run Last

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

Spec-Zone.ru

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