GtkMenuButton
GtkMenuButton — Виджет, отображающий всплывающее меню при нажатии
Функции
Свойства
| 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” или же общий иконкой "view-context-menu", если свойство 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, который будет всплывать при нажатии на кнопку, или NULL для отключения кнопки. Если установлены “menu-model” или “popover”, они будут установлены в NULL.
Параметры
menu_button | ||
menu | a GtkMenu. | [allow-none] |
С: 3.6
gtk_menu_button_get_popup ()
GtkMenu *
gtk_menu_button_get_popup (GtkMenuButton *menu_button); Возвращает GtkMenu, который всплывает из кнопки. Если кнопка не использует GtkMenu, эта функция возвращает NULL.
Параметры
menu_button |
С: 3.6
gtk_menu_button_set_popover ()
void gtk_menu_button_set_popover (GtkMenuButton *menu_button,GtkWidget *popover);
Устанавливает GtkPopover, который будет всплывать при нажатии на кнопку, или NULL для отключения кнопки. Если установлены “menu-model” или “popup”, они будут установлены в NULL.
Параметры
menu_button | ||
popover | a GtkPopover. | [allow-none] |
С: 3.12
gtk_menu_button_get_popover ()
GtkPopover *
gtk_menu_button_get_popover (GtkMenuButton *menu_button); Возвращает GtkPopover, который всплывает из кнопки. Если кнопка не использует GtkPopover, эта функция возвращает NULL.
Параметры
menu_button |
С: 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 | ||
menu_model | a GMenuModel. | [allow-none] |
С: 3.6
gtk_menu_button_get_menu_model ()
GMenuModel *
gtk_menu_button_get_menu_model (GtkMenuButton *menu_button); Возвращает GMenuModel, используемый для создания всплывающего элемента.
Параметры
menu_button |
С: 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+ постарается разместить его на экране так, чтобы оно было полностью видно.
Если для direction передаётся GTK_ARROW_NONE, всплывающее меню будет вести себя так, как будто вы передали 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;
enum GtkArrowType
Используется для указания направления стрелки.
Члены
GTK_ARROW_UP | Представляет стрелку, направленную вверх. | |
GTK_ARROW_DOWN | Представляет стрелку, направленную вниз. | |
GTK_ARROW_LEFT | Представляет стрелку, направленную влево. | |
GTK_ARROW_RIGHT | Представляет стрелку, направленную вправо. | |
GTK_ARROW_NONE | Без стрелки. С 2.10. |
Подробности свойств
Свойство “align-widget”
“align-widget” GtkContainer *
GtkWidget для выравнивания меню.
Флаги: Чтение / Запись
С версии: 3.6
Свойство “direction”
“direction” GtkArrowType
GtkArrowType – направление, в котором будет выпадать меню или всплывающее окно.
Флаги: Чтение / Запись
Значение по умолчанию: GTK_ARROW_DOWN
С версии: 3.6
Свойство “menu-model”
“menu-model” GMenuModel *
GMenuModel – источник данных для всплывающего меню. В зависимости от свойства “use-popover”, это может быть меню или всплывающее окно.
См. gtk_menu_button_set_menu_model() для взаимодействия со свойством “popup”.
Флаги: Чтение / Запись
С версии: 3.6
Свойство “popover”
“popover” GtkPopover *
GtkPopover, который будет всплывать при нажатии на кнопку.
Флаги: Чтение / Запись
С версии: 3.12
Свойство “popup”
“popup” GtkMenu *
GtkMenu, который будет всплывать при нажатии на кнопку.
Флаги: Чтение / Запись
С версии: 3.6
Свойство “use-popover”
“use-popover” gboolean
Определяет, будет ли создано всплывающее окно (GtkPopover) или меню (GtkMenu) из модели меню.
Флаги: Чтение / Запись
Значение по умолчанию: 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.20/GtkMenuButton.html