GtkMenuItem
GtkMenuItem — Виджет, используемый для элементов в меню
Функции
| GtkWidget * | gtk_menu_item_new () |
| GtkWidget * | gtk_menu_item_new_with_label () |
| GtkWidget * | gtk_menu_item_new_with_mnemonic () |
| void | gtk_menu_item_set_right_justified () |
| gboolean | gtk_menu_item_get_right_justified () |
| const gchar * | gtk_menu_item_get_label () |
| void | gtk_menu_item_set_label () |
| gboolean | gtk_menu_item_get_use_underline () |
| void | gtk_menu_item_set_use_underline () |
| void | gtk_menu_item_set_submenu () |
| GtkWidget * | gtk_menu_item_get_submenu () |
| void | gtk_menu_item_set_accel_path () |
| const gchar * | gtk_menu_item_get_accel_path () |
| void | gtk_menu_item_select () |
| void | gtk_menu_item_deselect () |
| void | gtk_menu_item_activate () |
| void | gtk_menu_item_toggle_size_request () |
| void | gtk_menu_item_toggle_size_allocate () |
| gboolean | gtk_menu_item_get_reserve_indicator () |
| void | gtk_menu_item_set_reserve_indicator () |
Свойства
| char * | accel-path | Чтение/Запись |
| char * | label | Чтение/Запись |
| gboolean | выравнивание по правому краю | Чтение/Запись |
| GtkMenu * | подменю | Чтение/Запись |
| gboolean | использовать подчеркивание | Чтение/Запись |
Стилизованные свойства
| float | масштабирование стрелки | Чтение |
| int | интервал стрелки | Чтение |
| int | горизонтальная отступ | Чтение |
| GtkShadowType | тип тени выделенного элемента | Чтение |
| int | интервал переключателя | Чтение |
| int | ширина символов | Чтение |
Сигналы
| void | активировать | Действие |
| void | активировать элемент | Выполнить первым |
| void | отменить выделение | Выполнить первым |
| void | выделить | Выполнить первым |
| void | изменить размер выделения | Выполнить первым |
| void | запрос изменения размера переключателя | Выполнить первым |
Типы и значения
| struct | GtkMenuItem |
| struct | GtkMenuItemClass |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkContainer
╰── GtkBin
╰── GtkMenuItem
├── GtkCheckMenuItem
├── GtkImageMenuItem
├── GtkSeparatorMenuItem
╰── GtkTearoffMenuItem
Реализованные интерфейсы
GtkMenuItem реализует интерфейсы AtkImplementorIface, GtkBuildable, GtkActivatable и GtkActionable.
Файлы заголовков
#include <gtk/gtk.h>
Описание
Виджет GtkMenuItem и производные виджеты являются единственными допустимыми дочерними элементами для меню. Они отвечают за правильную обработку выделения, выравнивания, событий и подменю.
Так как GtkMenuItem наследуется от GtkBin, он может содержать любой допустимый дочерний виджет, хотя лишь некоторые из них действительно полезны.
По умолчанию GtkMenuItem устанавливает GtkAccelLabel в качестве своего дочернего элемента. GtkMenuItem имеет прямые функции для установки метки и её горячей клавиши. Для более сложных настроек метки можно получить дочерний виджет из GtkBin.
Пример установки разметки и акселерограммы на элементе меню:
GtkMenuItem как GtkBuildable
Реализация GtkMenuItem интерфейса GtkBuildable поддерживает добавление подменю путем указания «submenu» в качестве атрибута «type» элемента <child>.
Пример фрагмента определения пользовательского интерфейса с подменю:
CSS-узлы
GtkWidget *menu_item = gtk_menu_item_new_with_label ("Example Menu Item");
GtkWidget *child = gtk_bin_get_child (GTK_BIN (menu_item));
gtk_label_set_markup (GTK_LABEL (child), "<i>new label</i> with <b>markup</b>");
gtk_accel_label_set_accel (GTK_ACCEL_LABEL (child), GDK_KEY_1, 0);GtkMenuItem имеет единственный CSS-узел с именем menuitem. Если у menuitem есть подменю, он получает ещё один CSS-узел с именем arrow, который имеет класс стиля .left или .right.
Функции
gtk_menu_item_new ()
GtkWidget *
gtk_menu_item_new (void); Создаёт новый элемент меню GtkMenuItem.
Возвращаемое значение
Созданный элемент меню GtkMenuItem
gtk_menu_item_new_with_label ()
GtkWidget *
gtk_menu_item_new_with_label (const gchar *label); Создаёт новый элемент меню GtkMenuItem, содержащий метку GtkLabel.
Параметры
label | текст метки |
Возвращаемое значение
Созданный элемент меню GtkMenuItem
gtk_menu_item_new_with_mnemonic ()
GtkWidget *
gtk_menu_item_new_with_mnemonic (const gchar *label); Создаёт новый элемент меню GtkMenuItem с меткой.
Метка создаётся с помощью gtk_label_new_with_mnemonic(), поэтому подчёркивания в label обозначают мнемонические сочетания клавиш для элемента меню.
Параметры
label | Текст элемента, с подчёркиванием символа мнемоники |
Возвращаемое значение
новый элемент меню GtkMenuItem
gtk_menu_item_set_right_justified ()
void gtk_menu_item_set_right_justified (GtkMenuItem *menu_item,gboolean right_justified);
gtk_menu_item_set_right_justified устарел начиная с версии 3.2 и не должен использоваться в новом коде.
Если вы настаиваете на его использовании, используйте gtk_widget_set_hexpand() и gtk_widget_set_halign().
Устанавливает, будет ли элемент меню выравниваться по правому краю панели меню. Это традиционно делалось для элементов меню «Справка», но сейчас это считается плохой практикой. (Если расположение элементов изменино для языков справа налево, как иврит или арабский, элементы, выровненные по правому краю, отображаются слева.)
Параметры
menu_item | элемент меню GtkMenuItem. | |
right_justified | если |
gtk_menu_item_get_right_justified ()
gboolean
gtk_menu_item_get_right_justified (GtkMenuItem *menu_item); gtk_menu_item_get_right_justified устарел начиная с версии 3.2 и не должен использоваться в новом коде.
Получает, выровнен ли элемент меню по правому краю панели меню.
Параметры
menu_item | элемент меню GtkMenuItem |
Возвращаемое значение
TRUE если элемент меню будет выровнен по правому краю, если он добавлен в панель меню.
gtk_menu_item_get_label ()
const gchar *
gtk_menu_item_get_label (GtkMenuItem *menu_item); Устанавливает text на метке menu_item
Параметры
menu_item | элемент меню GtkMenuItem |
Возвращаемое значение
Текст в метке menu_item. Это внутренняя строка, используемая меткой, и её нельзя изменять.
С версии: 2.16
gtk_menu_item_set_label ()
void gtk_menu_item_set_label (GtkMenuItem *menu_item,const gchar *label);
Устанавливает text на метке menu_item
Параметры
menu_item | элемент меню GtkMenuItem | |
label | желаемый текст |
С версии: 2.16
gtk_menu_item_get_use_underline ()
gboolean
gtk_menu_item_get_use_underline (GtkMenuItem *menu_item); Проверяет, указывает ли подчёркивание в тексте на то, что следующий символ должен использоваться в качестве мнемоники.
Параметры
menu_item | элемент меню GtkMenuItem |
Возвращаемое значение
TRUE если подчёркивание в метке указывает на мнемоническую клавишу.
С версии: 2.16
gtk_menu_item_set_use_underline ()
void gtk_menu_item_set_use_underline (GtkMenuItem *menu_item,gboolean setting);
Если true, подчёркивание в тексте указывает на то, что следующий символ должен использоваться в качестве мнемоники.
Параметры
menu_item | элемент меню GtkMenuItem | |
setting |
|
С версии: 2.16
gtk_menu_item_set_submenu ()
void gtk_menu_item_set_submenu (GtkMenuItem *menu_item,GtkWidget *submenu);
Устанавливает или заменяет подменю элемента меню, или удаляет его, если в качестве подменю передаётся NULL.
Параметры
menu_item | элемент меню GtkMenuItem | |
submenu | подменю, или | [allow-none][type Gtk.Menu] |
gtk_menu_item_get_submenu ()
GtkWidget *
gtk_menu_item_get_submenu (GtkMenuItem *menu_item); Получает подменю под данным элементом меню, если оно существует. См. gtk_menu_item_set_submenu().
Параметры
menu_item | элемент меню GtkMenuItem |
Возвращаемое значение
подменю для данного элемента меню, или NULL если его нет.
[nullable][transfer none]
gtk_menu_item_set_accel_path ()
void gtk_menu_item_set_accel_path (GtkMenuItem *menu_item,const gchar *accel_path);
Установите путь к сочетанию клавиш для menu_item, по которому можно определить и сохранить в постоянное хранилище внесённые пользователем изменения сочетаний клавиш пункта меню (см. gtk_accel_map_save() в этом разделе). Для установки сочетания клавиш по умолчанию для этого пункта меню вызовите gtk_accel_map_add_entry() с тем же accel_path. Также см. gtk_accel_map_add_entry() для получения подробностей о путях к сочетаниям клавиш и gtk_menu_set_accel_path() для более удобного варианта этой функции.
Эта функция в основном представляет собой удобную обёртку, которая обрабатывает вызов gtk_widget_set_accel_path() с соответствующей группой сочетаний клавиш для пункта меню.
Обратите внимание, что для работы необходимо установить сочетание клавиш для родительского меню с помощью gtk_menu_set_accel_group().
Обратите внимание, что строка accel_path будет храниться в GQuark. Поэтому, если вы передаёте статическую строку, вы можете сэкономить память, предварительно интернировав её с помощью g_intern_static_string().
Параметры
menu_item | действительный GtkMenuItem | |
accel_path | путь к сочетанию клавиш, соответствующий функциональности этого пункта меню, или | [allow-none] |
gtk_menu_item_get_accel_path ()
const gchar *
gtk_menu_item_get_accel_path (GtkMenuItem *menu_item); Получить путь к сочетанию клавиш, ранее заданный для menu_item.
Подробнее см. gtk_menu_item_set_accel_path().
Параметры
menu_item | действительный GtkMenuItem |
Возвращаемое значение
путь к сочетанию клавиш, соответствующий функциональности этого пункта меню, или NULL если не задан.
[nullable][transfer none]
С: 2.14
gtk_menu_item_select ()
void
gtk_menu_item_select (GtkMenuItem *menu_item); Вызывает сигнал “select” для данного элемента.
Параметры
menu_item | пункт меню |
gtk_menu_item_deselect ()
void
gtk_menu_item_deselect (GtkMenuItem *menu_item); Вызывает сигнал “deselect” для данного элемента.
Параметры
menu_item | пункт меню |
gtk_menu_item_activate ()
void
gtk_menu_item_activate (GtkMenuItem *menu_item); Вызывает сигнал “activate” для данного элемента.
Параметры
menu_item | пункт меню |
gtk_menu_item_toggle_size_request ()
void gtk_menu_item_toggle_size_request (GtkMenuItem *menu_item,gint *requisition);
Вызывает сигнал “toggle-size-request” для данного элемента.
Параметры
menu_item | пункт меню | |
requisition | запрос, используемый в качестве данных сигнала. | [inout] |
gtk_menu_item_toggle_size_allocate ()
void gtk_menu_item_toggle_size_allocate (GtkMenuItem *menu_item,gint allocation);
Вызывает сигнал “toggle-size-allocate” для данного элемента.
Параметры
menu_item | пункт меню. | |
allocation | выделение, используемое в качестве данных сигнала. |
gtk_menu_item_get_reserve_indicator ()
gboolean
gtk_menu_item_get_reserve_indicator (GtkMenuItem *menu_item); Возвращает значение, указывающее, резервирует ли menu_item место для индикатора подменю, независимо от наличия подменю.
Параметры
menu_item |
Возвращаемое значение
TRUE если menu_item всегда резервирует место для индикатора подменю.
С: 3.0
gtk_menu_item_set_reserve_indicator ()
void gtk_menu_item_set_reserve_indicator (GtkMenuItem *menu_item,gboolean reserve);
Устанавливает, должен ли menu_item резервировать место для индикатора подменю, независимо от фактического наличия подменю.
Приложениям вряд ли потребуется вызывать эту функцию.
Параметры
menu_item | ||
reserve | новое значение |
С: 3.0
Типы и значения
Структура GtkMenuItem
struct GtkMenuItem;
Структура GtkMenuItemClass
struct GtkMenuItemClass {
GtkBinClass parent_class;
/* If the following flag is true, then we should always
* hide the menu when the MenuItem is activated. Otherwise,
* it is up to the caller. For instance, when navigating
* a menu with the keyboard, <Space> doesn't hide, but
* <Return> does.
*/
guint hide_on_activate : 1;
void (* activate) (GtkMenuItem *menu_item);
void (* activate_item) (GtkMenuItem *menu_item);
void (* toggle_size_request) (GtkMenuItem *menu_item,
gint *requisition);
void (* toggle_size_allocate) (GtkMenuItem *menu_item,
gint allocation);
void (* set_label) (GtkMenuItem *menu_item,
const gchar *label);
const gchar * (* get_label) (GtkMenuItem *menu_item);
void (* select) (GtkMenuItem *menu_item);
void (* deselect) (GtkMenuItem *menu_item);
};
Члены
guint | Если | |
| Сигнал, генерируемый при активации элемента. | |
| Сигнал, генерируемый при активации элемента, а также если у элемента-меню есть подменю. | |
| ||
| ||
| Устанавливает | |
| Получает | |
| Сигнал, генерируемый при выборе элемента. | |
| Сигнал, генерируемый при отмене выбора элемента. |
Подробное описание свойств
Свойство “accel-path”
“accel-path” char *
Устанавливает путь к акселератору элемента меню, с помощью которого можно идентифицировать и сохранить в постоянное хранилище изменения акселератора элемента меню, внесённые пользователем.
Владелец: GtkMenuItem
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.14
Свойство “label”
“label” char *
Текст для метки дочернего элемента.
Владелец: GtkMenuItem
Флаги: Чтение / Запись
Значение по умолчанию: ""
С версии: 2.16
Свойство “right-justified”
“right-justified” gboolean
Определяет, выравнивается ли элемент меню по правому краю панели меню.
Владелец: GtkMenuItem
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.14
Свойство “submenu”
“submenu” GtkMenu *
Подменю, прикреплённое к элементу меню, или NULL, если его нет.
Владелец: GtkMenuItem
Флаги: Чтение / Запись
С версии: 2.12
Свойство “use-underline”
“use-underline” gboolean
TRUE если подчеркивания в тексте указывают на мнемоники.
Владелец: GtkMenuItem
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.16
Подробное описание свойств стиля
Свойство стиля “arrow-scaling”
“arrow-scaling” float
Количество места, занимаемого стрелкой, относительно размера шрифта элемента меню.
GtkMenuItem:arrow-scaling устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте стандартные свойства CSS min-width/min-height для узла стрелки; значение этого свойства стиля игнорируется.
Владелец: GtkMenuItem
Флаги: Чтение
Допустимые значения: [0,2]
Значение по умолчанию: 0.8
Свойство стиля “arrow-spacing”
“arrow-spacing” int
Отступ между меткой элемента меню и стрелкой подменю.
GtkMenuItem:arrow-spacing устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS margin для узла стрелки; значение этого свойства стиля игнорируется.
Владелец: GtkMenuItem
Флаги: Чтение
Допустимые значения: ≥ 0
Значение по умолчанию: 10
Свойство стиля “horizontal-padding”
“horizontal-padding” int
Отступ слева и справа от элемента меню.
GtkMenuItem:horizontal-padding устарело с версии 3.8 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS padding (через объекты вроде GtkStyleContext и GtkCssProvider); значение этого свойства стиля игнорируется.
Владелец: GtkMenuItem
Флаги: Чтение
Допустимые значения: ≥ 0
Значение по умолчанию: 0
Свойство стиля “selected-shadow-type”
“selected-shadow-type” GtkShadowType
Тип тени при выборе элемента.
GtkMenuItem:selected-shadow-type устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте CSS для определения тени; значение этого свойства стиля игнорируется.
Владелец: GtkMenuItem
Флаги: Чтение
Значение по умолчанию: GTK_SHADOW_NONE
Свойство стиля “toggle-spacing”
“toggle-spacing” int
Отступ между иконкой и меткой элемента переключателя.
GtkMenuItem:toggle-spacing устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS margin для узлов галочки или радиокнопки; значение этого свойства стиля игнорируется.
Владелец: GtkMenuItem
Флаги: Чтение
Допустимые значения: ≥ 0
Значение по умолчанию: 5
Свойство стиля “width-chars”
“width-chars” int
Минимальная желаемая ширина элемента меню в символах.
GtkMenuItem:width-chars устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS min-width; значение этого свойства стиля игнорируется.
Владелец: GtkMenuItem
Флаги: Чтение
Допустимые значения: ≥ 0
Значение по умолчанию: 12
С версии: 2.14
Подробное описание сигналов
Сигнал “activate”
void user_function (GtkMenuItem *menuitem, gpointer user_data)
Генерируется при активации элемента.
Параметры
menuitem | объект, получивший сигнал. | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Действие
Сигнал “activate-item”
void user_function (GtkMenuItem *menuitem, gpointer user_data)
Генерируется при активации элемента, а также если у элемента-меню есть подменю. Для обычных приложений, соответствующий сигнал — «activate».
Параметры
menuitem | объект, получивший сигнал. | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “deselect”
void user_function (GtkMenuItem *menuitem, gpointer user_data)
Флаги: Выполняется первым
Сигнал “select”
void user_function (GtkMenuItem *menuitem, gpointer user_data)
Флаги: Выполняется первым
Сигнал “toggle-size-allocate”
void user_function (GtkMenuItem *menuitem, int arg1, gpointer user_data)
Флаги: Выполняется первым
Сигнал “toggle-size-request”
void user_function (GtkMenuItem *menuitem, gpointer arg1, gpointer user_data)
Флаги: Выполняется первым
См. также
© 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/GtkMenuItem.html