GtkMenuButton
GtkMenuButton — Виджет, отображающий всплывающее меню при нажатии
Функции
| GtkWidget * | gtk_menu_button_new () |
| void | gtk_menu_button_set_popup () |
| GtkMenu * | gtk_menu_button_get_popup () |
| void | gtk_menu_button_set_popover () |
| GtkPopover * | gtk_menu_button_get_popover () |
| void | gtk_menu_button_set_menu_model () |
| GMenuModel * | gtk_menu_button_get_menu_model () |
| void | gtk_menu_button_set_use_popover () |
| gboolean | gtk_menu_button_get_use_popover () |
| void | gtk_menu_button_set_direction () |
| GtkArrowType | gtk_menu_button_get_direction () |
| void | gtk_menu_button_set_align_widget () |
| GtkWidget * | gtk_menu_button_get_align_widget () |
Свойства
| GtkContainer * | align-widget | Чтение / Запись |
| GtkArrowType | direction | Чтение / Запись |
| GMenuModel * | menu-model | Чтение / Запись |
| GtkPopover * | popover | Чтение / Запись |
| GtkMenu * | popup | Чтение / Запись |
| gboolean | use-popover | Чтение / Запись |
Типы и значения
| struct | GtkMenuButton |
| enum | GtkArrowType |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkContainer
╰── GtkBin
╰── GtkButton
╰── GtkToggleButton
╰── GtkMenuButton
Реализованные интерфейсы
GtkMenuButton реализует AtkImplementorIface, GtkBuildable, GtkActionable и GtkActivatable.
Файлы заголовков
#include <gtk/gtk.h>
Описание
Виджет GtkMenuButton используется для отображения всплывающего меню при нажатии. Это всплывающее меню может быть представлено как GtkMenu, GtkPopover или абстрактный GMenuModel.
Виджет GtkMenuButton может содержать любой допустимый дочерний виджет. То есть, он может содержать практически любой другой стандартный виджет GtkWidget. Наиболее часто используемым дочерним виджетом является GtkImage. Если в GtkMenuButton явным образом не добавлен виджет, автоматически создается GtkImage со стрелкой, ориентированной в соответствии с свойством “direction”, или универсальный иконкой «открыть меню» в случае, если свойство direction не задано.
Позиционирование всплывающего меню определяется свойством “direction” кнопки меню.
Для меню также учитываются свойства “halign” и “valign” меню. Например, при направлении GTK_ARROW_DOWN и горизонтальном выравнивании GTK_ALIGN_START меню будет расположено ниже кнопки, причём начальный край (в зависимости от направления текста) меню будет выровнен с начальным краем кнопки. Если ниже кнопки недостаточно места, меню всплывает над кнопкой. Если выравнивание поместило бы часть меню за пределы экрана, оно будет «отодвинуто» внутрь.
Direction = Down
-
halign = start
-
halign = center
-
halign = end
Direction = Up
-
halign = start
-
halign = center
-
halign = end
Direction = Left
-
valign = start
-
valign = center
-
valign = end
Direction = Right
-
valign = start
-
valign = center
-
valign = end
CSS-узлы
GtkMenuButton имеет один CSS-узел с именем button. Для отличия от обычной GtkButton он получает класс стиля .popup.
Функции
gtk_menu_button_new ()
GtkWidget *
gtk_menu_button_new (void); Создаёт новый виджет GtkMenuButton со стрелкой вниз как единственным потомком. Вы можете заменить виджет потомка другим виджетом GtkWidget, если пожелаете.
Возвращает
Созданный виджет GtkMenuButton
С версии: 3.6
gtk_menu_button_set_popup ()
void gtk_menu_button_set_popup (GtkMenuButton *menu_button,GtkWidget *menu);
Устанавливает GtkMenu, который будет всплывать при нажатии на menu_button, или NULL для отсоединения любого существующего меню и отключения кнопки.
Если свойство “menu-model” или “popover” установлены, эти объекты отсоединяются от menu_button, и эти свойства устанавливаются в NULL.
Параметры
menu_button | виджет GtkMenuButton | |
menu | виджет GtkMenu или | [nullable] |
С версии: 3.6
gtk_menu_button_get_popup ()
GtkMenu *
gtk_menu_button_get_popup (GtkMenuButton *menu_button); Возвращает GtkMenu, всплывающий из кнопки. Если кнопка не использует GtkMenu, эта функция возвращает NULL.
Параметры
menu_button | виджет GtkMenuButton |
С версии: 3.6
gtk_menu_button_set_popover ()
void gtk_menu_button_set_popover (GtkMenuButton *menu_button,GtkWidget *popover);
Устанавливает GtkPopover, который будет всплывать при нажатии на menu_button, или NULL для отсоединения любого существующего всплывающего окна и отключения кнопки.
Если свойства “menu-model” или “popup” установлены, эти объекты отсоединяются от menu_button, и эти свойства устанавливаются в NULL.
Параметры
menu_button | виджет GtkMenuButton | |
popover | виджет GtkPopover или | [nullable] |
С версии: 3.12
gtk_menu_button_get_popover ()
GtkPopover *
gtk_menu_button_get_popover (GtkMenuButton *menu_button); Возвращает GtkPopover, всплывающий из кнопки. Если кнопка не использует GtkPopover, эта функция возвращает NULL.
Параметры
menu_button | виджет GtkMenuButton |
С версии: 3.12
gtk_menu_button_set_menu_model ()
void gtk_menu_button_set_menu_model (GtkMenuButton *menu_button,GMenuModel *menu_model);
Устанавливает GMenuModel для построения всплывающего меню, или NULL для отсоединения любого существующего модели меню и отключения кнопки.
В зависимости от значения “use-popover”, будет создано либо GtkMenu с помощью gtk_menu_new_from_model(), либо GtkPopover с помощью gtk_popover_new_from_model(). В любом случае, действия будут подключены так, как описано для этих функций.
Если “popup” или “popover” уже установлены, эти виджеты отсоединяются от menu_button, и эти свойства устанавливаются в NULL.
Параметры
menu_button | виджет GtkMenuButton | |
menu_model | виджет GMenuModel или | [nullable] |
С версии: 3.6
gtk_menu_button_get_menu_model ()
GMenuModel *
gtk_menu_button_get_menu_model (GtkMenuButton *menu_button); Возвращает GMenuModel, используемый для генерации всплывающего меню.
Параметры
menu_button | виджет GtkMenuButton |
Возвращает
виджет GMenuModel или NULL.
[nullable][transfer none]
С версии: 3.6
gtk_menu_button_set_use_popover ()
void gtk_menu_button_set_use_popover (GtkMenuButton *menu_button,gboolean use_popover);
Устанавливает, нужно ли создавать GtkPopover вместо GtkMenu при вызове gtk_menu_button_set_menu_model(). Обратите внимание, что это свойство учитывается только при установке новой модели меню.
Параметры
menu_button | ||
use_popover |
|
С: 3.12
gtk_menu_button_get_use_popover ()
gboolean
gtk_menu_button_get_use_popover (GtkMenuButton *menu_button); Возвращает, будет ли создаваться GtkPopover или GtkMenu из модели меню.
Параметры
menu_button |
Возвращаемое значение
TRUE если используется GtkPopover
С: 3.12
gtk_menu_button_set_direction ()
void gtk_menu_button_set_direction (GtkMenuButton *menu_button,GtkArrowType direction);
Устанавливает направление всплывающего меню, а также изменяет направление стрелки. Дочерний элемент не будет изменён на стрелку, если он был настроен.
Если содержимое не помещается в доступное пространство в заданном направлении, GTK+ постарается сохранить его на экране и полностью отобразить.
Если вы передадите GTK_ARROW_NONE для direction, всплывающее меню будет вести себя так, как если бы вы передали GTK_ARROW_DOWN (хотя вы не увидите стрелок).
Параметры
menu_button | ||
direction |
С: 3.6
gtk_menu_button_get_direction ()
GtkArrowType
gtk_menu_button_get_direction (GtkMenuButton *menu_button); Возвращает направление, в котором будет указывать всплывающее меню при открытии.
Параметры
menu_button |
Возвращаемое значение
значение GtkArrowType
С: 3.6
gtk_menu_button_set_align_widget ()
void gtk_menu_button_set_align_widget (GtkMenuButton *menu_button,GtkWidget *align_widget);
Устанавливает GtkWidget для выравнивания меню при открытии. Обратите внимание, что align_widget должен содержать сам GtkMenuButton.
Установка в NULL означает, что меню будет выровнено с самим кнопкой.
Обратите внимание, что это свойство используется только с меню, а не со всплывающими меню.
Параметры
menu_button | ||
align_widget | a GtkWidget. | [allow-none] |
С: 3.6
gtk_menu_button_get_align_widget ()
GtkWidget *
gtk_menu_button_get_align_widget (GtkMenuButton *menu_button); Возвращает родительский GtkWidget для выравнивания меню.
Параметры
menu_button |
С: 3.6
Типы и Значения
struct GtkMenuButton
struct GtkMenuButton;
перечисление GtkArrowType
Используется для указания направления, в котором должна указывать стрелка.
Члены
GTK_ARROW_UP | Представляет стрелку, направленную вверх. | |
GTK_ARROW_DOWN | Представляет стрелку, направленную вниз. | |
GTK_ARROW_LEFT | Представляет стрелку, направленную влево. | |
GTK_ARROW_RIGHT | Представляет стрелку, направленную вправо. | |
GTK_ARROW_NONE | Нет стрелки. С версии 2.10. |
Подробное описание свойств
Свойство “align-widget”
“align-widget” GtkContainer *
GtkWidget для выравнивания меню.
Владелец: GtkMenuButton
Флаги: Чтение / Запись
С версии: 3.6
Свойство “direction”
“direction” GtkArrowType
Тип стрелки GtkArrowType, определяющий направление выпадающего меню или всплывающего окна.
Владелец: GtkMenuButton
Флаги: Чтение / Запись
Значение по умолчанию: GTK_ARROW_DOWN
С версии: 3.6
Свойство “menu-model”
“menu-model” GMenuModel *
Модель меню GMenuModel, на основе которой создаётся всплывающее окно. В зависимости от свойства “use-popover”, это может быть меню или всплывающее окно.
См. gtk_menu_button_set_menu_model() для взаимодействия со свойством “popup”.
Владелец: GtkMenuButton
Флаги: Чтение / Запись
С версии: 3.6
Свойство “popover”
“popover” GtkPopover *
Всплывающее окно GtkPopover, которое будет отображаться при нажатии на кнопку.
Владелец: GtkMenuButton
Флаги: Чтение / Запись
С версии: 3.12
Свойство “popup”
“popup” GtkMenu *
Меню GtkMenu, которое будет отображаться при нажатии на кнопку.
Владелец: GtkMenuButton
Флаги: Чтение / Запись
С версии: 3.6
Свойство “use-popover”
“use-popover” gboolean
Определяет, нужно ли создавать всплывающее окно GtkPopover или меню GtkMenu на основе модели меню.
Владелец: GtkMenuButton
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
С версии: 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/GtkMenuButton.html