GtkPopover
GtkPopover — Всплывающие окна, зависящие от контекста
Функции
| GtkWidget * | gtk_popover_new () |
| GtkWidget * | gtk_popover_new_from_model () |
| void | gtk_popover_bind_model () |
| void | gtk_popover_popup () |
| void | gtk_popover_popdown () |
| void | gtk_popover_set_relative_to () |
| GtkWidget * | gtk_popover_get_relative_to () |
| void | gtk_popover_set_pointing_to () |
| gboolean | gtk_popover_get_pointing_to () |
| void | gtk_popover_set_position () |
| GtkPositionType | gtk_popover_get_position () |
| void | gtk_popover_set_constrain_to () |
| GtkPopoverConstraint | gtk_popover_get_constrain_to () |
| void | gtk_popover_set_modal () |
| gboolean | gtk_popover_get_modal () |
| void | gtk_popover_set_transitions_enabled () |
| gboolean | gtk_popover_get_transitions_enabled () |
| void | gtk_popover_set_default_widget () |
| GtkWidget * | gtk_popover_get_default_widget () |
Свойства
| GtkPopoverConstraint | constrain-to | Чтение/Запись |
| gboolean | modal | Чтение/Запись |
| GdkRectangle * | pointing-to | Чтение/Запись |
| GtkPositionType | position | Чтение/Запись |
| GtkWidget * | relative-to | Чтение/Запись |
| gboolean | transitions-enabled | Чтение/Запись |
Сигналы
| void | closed | Run Last |
Типы и значения
| struct | GtkPopover |
| enum | GtkPopoverConstraint |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkContainer
╰── GtkBin
╰── GtkPopover
╰── GtkPopoverMenu
Реализованные интерфейсы
GtkPopover реализует AtkImplementorIface и GtkBuildable.
Файлы включения
#include <gtk/gtk.h>
Описание
GtkPopover — это контекстное окно в виде всплывающего окна, предназначенное в первую очередь для предоставления контекстно-зависимой информации или параметров. Поповеры прикрепляются к виджету, передаваемому при создании в gtk_popover_new(), или обновляются позже с помощью gtk_popover_set_relative_to(). По умолчанию они указывают на всю область виджета, хотя это поведение можно изменить с помощью gtk_popover_set_pointing_to().
Позицию поповера относительно прикрепленного к нему виджета также можно изменить с помощью gtk_popover_set_position().
По умолчанию GtkPopover выполняет захват GTK+, чтобы обеспечить перенаправление событий ввода на него во время отображения, а также для закрытия поповера в ожидаемых ситуациях (щелчки за пределами поповера или нажатие клавиши Esc). Если такое модальное поведение для поповера нежелательно, можно вызвать gtk_popover_set_modal() для настройки его поведения.
GtkPopover как замена меню
GtkPopover часто используется для замены меню. Для этого он поддерживает заполнение из GMenuModel с помощью gtk_popover_new_from_model(). В дополнение ко всем обычным функциям модели меню, эта функция поддерживает рендеринг разделов в модели в более компактной форме, как ряд кнопок с иконками вместо пунктов меню.
Для использования этого рендеринга, установите атрибут раздела «display-hint» в «horizontal-buttons» и установите иконки элементов с атрибутом «verb-icon».
<section>
<attribute name="display-hint">horizontal-buttons</attribute>
<item>
<attribute name="label">Cut</attribute>
<attribute name="action">app.cut</attribute>
<attribute name="verb-icon">edit-cut-symbolic</attribute>
</item>
<item>
<attribute name="label">Copy</attribute>
<attribute name="action">app.copy</attribute>
<attribute name="verb-icon">edit-copy-symbolic</attribute>
</item>
<item>
<attribute name="label">Paste</attribute>
<attribute name="action">app.paste</attribute>
<attribute name="verb-icon">edit-paste-symbolic</attribute>
</item>
</section>CSS-узлы
GtkPopover имеет единственный CSS-узел, называемый popover. Он всегда получает стиль класса .background, а также получает стиль класса .menu, если он похож на меню (например, GtkPopoverMenu или создан с помощью gtk_popover_new_from_model().
Конкретные случаи использования GtkPopover, такие как всплывающие окна выбора касанием или увеличители в GtkEntry или GtkTextView, получают классы стилей, такие как .touch-selection или .magnifier, чтобы отличить их от обычных поповеров.
Функции
gtk_popover_new ()
GtkWidget *
gtk_popover_new (GtkWidget *relative_to); Создаёт новый всплывающее меню, привязанное к relative_to
Параметры
relative_to | GtkWidget к которому привязывается всплывающее меню. | [allow-none] |
Возвращает
новый GtkPopover
С: 3.12
gtk_popover_new_from_model ()
GtkWidget * gtk_popover_new_from_model (GtkWidget *relative_to,GMenuModel *model);
Создаёт GtkPopover и заполняет его в соответствии с model. Всплывающее меню прикрепляется к элементу relative_to.
Созданные кнопки соединяются с действиями, найденными в GtkApplicationWindow, к которому относится всплывающее меню — обычно путём привязки к элементу, содержащемуся в иерархии виджетов GtkApplicationWindows.
Действия также могут быть добавлены с помощью gtk_widget_insert_action_group() к виджету прикрепления меню или к любому из его родительских виджетов.
Параметры
relative_to | GtkWidget к которому привязывается всплывающее меню. | [allow-none] |
model | a GMenuModel |
Возвращает
новый GtkPopover
С: 3.12
gtk_popover_bind_model ()
void gtk_popover_bind_model (GtkPopover *popover,GMenuModel *model,const gchar *action_namespace);
Устанавливает связь между GtkPopover и GMenuModel.
Содержимое popover удаляется, а затем заполняется пунктами меню в соответствии с model. При изменении model, popover обновляется. Вызов этой функции дважды для popover с разными model заменит первое привязывание привязкой к новому модели. Если model NULL, то любая предыдущая привязка отменяется, и все дочерние элементы удаляются.
Если action_namespace не NULL, то эффект такой, как если бы все действия, упомянутые в model, имели свои имена, дополненные префиксом из пространства имён, плюс точка. Например, если действие “quit” упомянуто, а action_namespace равно “app”, то эффективное имя действия — “app.quit”.
Эта функция использует GtkActionable для определения имени действия и целевых значений в созданных пунктах меню. Если вы хотите использовать другую группу действий, кроме “app” и “win”, или если вы хотите использовать GtkMenuShell вне GtkApplicationWindow, то вам нужно прикрепить свою собственную группу действий к иерархии виджетов с помощью gtk_widget_insert_action_group(). Например, если вы создали группу с действием “quit” и вставили её с именем “mygroup”, то вы будете использовать имя действия “mygroup.quit” в вашем GMenuModel.
Параметры
popover | ||
model | связанный GMenuModel или | [allow-none] |
action_namespace | пространство имён действий в | [allow-none] |
С: 3.12
gtk_popover_popup ()
void
gtk_popover_popup (GtkPopover *popover); Отображает popover. Это отличается от вызова gtk_widget_show() тем, что отображает всплывающее меню с эффектом анимации. Если вы хотите отобразить всплывающее меню без анимации, используйте gtk_widget_show().
Параметры
popover |
С: 3.22
gtk_popover_popdown ()
void
gtk_popover_popdown (GtkPopover *popover); Скрывает popover. Это отличается от вызова gtk_widget_hide() тем, что скрывает всплывающее меню с эффектом анимации. Если вы хотите скрыть всплывающее меню без анимации, используйте gtk_widget_hide().
Параметры
popover |
С: 3.22
gtk_popover_set_relative_to ()
void gtk_popover_set_relative_to (GtkPopover *popover,GtkWidget *relative_to);
Устанавливает новый виджет для прикрепления к popover. Если popover отображается, положение будет обновлено.
Примечание: владение всплывающими меню всегда передаётся виджету relative_to, поэтому если relative_to будет установлено на NULL на подключённом popover, он будет откреплён от предыдущего виджета и, следовательно, уничтожен, если не будут сохранены дополнительные ссылки.
Параметры
popover | ||
relative_to | a GtkWidget. | [allow-none] |
С: 3.12
gtk_popover_get_relative_to ()
GtkWidget *
gtk_popover_get_relative_to (GtkPopover *popover); Возвращает виджет, к которому popover в настоящее время прикреплён.
Параметры
popover |
С: 3.12
gtk_popover_set_pointing_to ()
void gtk_popover_set_pointing_to (GtkPopover *popover,const GdkRectangle *rect);
Устанавливает прямоугольник, к которому будет направлен popover, в системе координат виджета, к которому прикреплён popover. См. gtk_popover_set_relative_to().
Параметры
popover | ||
rect | прямоугольник, к которому нужно направить |
С версии: 3.12
gtk_popover_get_pointing_to ()
gboolean gtk_popover_get_pointing_to (GtkPopover *popover,GdkRectangle *rect);
Если был задан прямоугольник для направления, эта функция вернёт TRUE и заполнит rect этим прямоугольником. В противном случае вернёт FALSE и заполнит rect координатами прикреплённого виджета.
Параметры
popover | ||
rect | место для хранения прямоугольника. | [out] |
Возвращает
TRUE если был задан прямоугольник для направления.
gtk_popover_set_position ()
void gtk_popover_set_position (GtkPopover *popover,GtkPositionType position);
Устанавливает предпочтительное положение для отображения popover. Если popover в данный момент отображается, оно будет немедленно обновлено.
Эта предпочтительность будет учтена по возможности, хотя при недостатке места (например, если близок к границам окна), GtkPopover может выбрать отображение на противоположной стороне
Параметры
popover | ||
position | предпочтительное положение всплывающего окна |
С версии: 3.12
gtk_popover_get_position ()
GtkPositionType
gtk_popover_get_position (GtkPopover *popover); Возвращает предпочтительное положение popover .
Параметры
popover |
Возвращает
Предпочтительное положение.
gtk_popover_set_constrain_to ()
void gtk_popover_set_constrain_to (GtkPopover *popover,GtkPopoverConstraint constraint);
Устанавливает ограничение для позиционирования этого всплывающего окна.
Обратите внимание, что не все платформы поддерживают свободное размещение всплывающих окон и могут уже накладывать ограничения.
Параметры
popover | ||
constraint | новое ограничение |
С версии: 3.20
gtk_popover_get_constrain_to ()
GtkPopoverConstraint
gtk_popover_get_constrain_to (GtkPopover *popover); Возвращает ограничение для размещения этого всплывающего окна. См. gtk_popover_set_constrain_to().
Параметры
popover |
Возвращает
ограничение для размещения этого всплывающего окна.
С версии: 3.20
gtk_popover_set_modal ()
void gtk_popover_set_modal (GtkPopover *popover,gboolean modal);
Устанавливает, является ли popover модальным. Модальное всплывающее окно захватит весь ввод в главном окне и получит фокус клавиатуры при отображении. Щелчок вне области всплывающего окна или нажатие клавиши Esc закроет всплывающее окно и освободит ввод.
Параметры
popover | ||
modal | TRUE чтобы всплывающее окно захватывало весь ввод в главном окне |
С версии: 3.12
gtk_popover_get_modal ()
gboolean
gtk_popover_get_modal (GtkPopover *popover); Возвращает, является ли всплывающее окно модальным. См. gtk_popover_set_modal, чтобы узнать о последствиях этого.
Параметры
popover |
Возвращает
TRUE если popover модальное
С версии: 3.12
gtk_popover_set_transitions_enabled ()
void gtk_popover_set_transitions_enabled (GtkPopover *popover,gboolean transitions_enabled);
gtk_popover_set_transitions_enabled устарело с версии 3.22 и не должно использоваться в новом коде.
Вы можете отображать или скрывать всплывающее окно без анимации, используя gtk_widget_show() и gtk_widget_hide(), а gtk_popover_popup() и gtk_popover_popdown() будут использовать анимацию.
Устанавливает, включены ли анимации при отображении/скрытии этого всплывающего окна
Параметры
popover | ||
transitions_enabled | Включить ли анимации |
С версии: 3.16
gtk_popover_get_transitions_enabled ()
gboolean
gtk_popover_get_transitions_enabled (GtkPopover *popover); gtk_popover_get_transitions_enabled устарело с версии 3.22 и не должно использоваться в новом коде.
Вы можете отображать или скрывать всплывающее окно без анимации, используя gtk_widget_show() и gtk_widget_hide(), а gtk_popover_popup() и gtk_popover_popdown() будут использовать анимацию.
Возвращает, включены ли анимации при отображении/скрытии этого всплывающего окна.
Параметры
popover |
Возвращает
TRUE если анимации при отображении и скрытии заданного всплывающего окна включены, FALSE в противном случае.
С версии: 3.16
gtk_popover_set_default_widget ()
void gtk_popover_set_default_widget (GtkPopover *popover,GtkWidget *widget);
Устанавливает виджет, который должен быть установлен в качестве виджета по умолчанию во время отображения всплывающей подсказки (см. gtk_window_set_default()). GtkPopover запоминает предыдущий виджет по умолчанию и восстанавливает его при закрытии всплывающей подсказки.
Параметры
popover | ||
widget | новый виджет по умолчанию или | [allow-none] |
С: 3.18
gtk_popover_get_default_widget ()
GtkWidget *
gtk_popover_get_default_widget (GtkPopover *popover); Получает виджет, который должен быть установлен в качестве виджета по умолчанию во время отображения всплывающей подсказки.
Параметры
popover |
Возвращает
виджет по умолчанию или NULL если его нет.
[nullable][transfer none]
С: 3.18
Типы и значения
struct GtkPopover
struct GtkPopover;
перечисление GtkPopoverConstraint
Описывает ограничения для позиционирования всплывающих подсказок. В будущем в это перечисление могут быть добавлены другие значения.
Элементы
GTK_POPOVER_CONSTRAINT_NONE | Не ограничивать позицию всплывающей подсказки, кроме ограничений, накладываемых реализацией | |
GTK_POPOVER_CONSTRAINT_WINDOW | Ограничить всплывающую подсказку границами окна, к которому она прикреплена |
С: 3.20
Подробное описание свойств
Свойство “constrain-to”
“constrain-to” GtkPopoverConstraint
Устанавливает ограничение для позиции всплывающей подсказки.
Владелец: GtkPopover
Флаги: Чтение/Запись
Значение по умолчанию: GTK_POPOVER_CONSTRAINT_WINDOW
С: 3.20
Свойство “modal”
“modal” gboolean
Устанавливает, является ли всплывающая подсказка модальной (так что другие элементы в окне не получают входные данные, пока всплывающая подсказка видна).
Владелец: GtkPopover
Флаги: Чтение/Запись
Значение по умолчанию: TRUE
С: 3.12
Свойство “pointing-to”
“pointing-to” GdkRectangle *
Отмечает определённый прямоугольник для указания.
Владелец: GtkPopover
Флаги: Чтение/Запись
С: 3.12
Свойство “position”
“position” GtkPositionType
Устанавливает предпочтительную позицию всплывающей подсказки.
Владелец: GtkPopover
Флаги: Чтение/Запись
Значение по умолчанию: GTK_POS_TOP
С: 3.12
Свойство “relative-to”
“relative-to” GtkWidget *
Устанавливает прикреплённый виджет.
Владелец: GtkPopover
Флаги: Чтение/Запись
С: 3.12
Свойство “transitions-enabled”
“transitions-enabled” gboolean
Включены ли анимации при отображении/скрытии этой всплывающей подсказки.
GtkPopover:transitions-enabled устарело с версии 3.22 и не должно использоваться в новых кодах.
Вы можете отобразить или скрыть всплывающую подсказку без анимаций, используя gtk_widget_show() и gtk_widget_hide(), а gtk_popover_popup() и gtk_popover_popdown() будут использовать анимации.
Владелец: GtkPopover
Флаги: Чтение/Запись
Значение по умолчанию: TRUE
С: 3.16
Подробное описание сигналов
Сигнал “closed”
void user_function (GtkPopover *popover, gpointer user_data)
Этот сигнал генерируется, когда всплывающая подсказка закрывается либо через API, либо пользователем.
Параметры
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
С: 3.12
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkPopover.html