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 () |
Свойства
| gchar * | accel-path | Чтение/Запись |
| gchar * | label | Чтение/Запись |
| gboolean | выравнивание по правому краю | Чтение/Запись |
| GtkMenu * | подменю | Чтение/Запись |
| gboolean | подчеркивание | Чтение/Запись |
Стилизованные свойства
| gfloat | масштабирование стрелки | Чтение |
| gint | интервал стрелки | Чтение |
| gint | горизонтальная отступ | Чтение |
| GtkShadowType | тип тени при выделении | Чтение |
| gint | интервал переключателя | Чтение |
| gint | ширина символов | Чтение |
Сигналы
Типы и значения
| 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.
Пример установки разметки и акцелератора в MenuItem:
GtkMenuItem как GtkBuildable
Реализация GtkMenuItem интерфейса GtkBuildable поддерживает добавление подменю путем указания «submenu» в качестве атрибута «type» элемента <child>.
Пример фрагмента определения пользовательского интерфейса с подменю:
Узлы CSS
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 | a 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 |
Возвращает
TRUE, если пункт меню будет выровнен по правому краю, если он добавлен в строку меню.
gtk_menu_item_get_label ()
const gchar *
gtk_menu_item_get_label (GtkMenuItem *menu_item); Устанавливает text для метки menu_item.
Параметры
menu_item |
Возвращает
Текст в метке 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 | ||
label | Текст, который вы хотите установить |
С: 2.16
gtk_menu_item_get_use_underline ()
gboolean
gtk_menu_item_get_use_underline (GtkMenuItem *menu_item); Проверяет, указывает ли подчёркнутый текст на то, что следующий символ должен использоваться для мнемонической клавиши.
Параметры
menu_item |
Возвращает
TRUE, если подчёркнутый символ в метке указывает на мнемоническую клавишу.
С: 2.16
gtk_menu_item_set_use_underline ()
void gtk_menu_item_set_use_underline (GtkMenuItem *menu_item,gboolean setting);
Если true, подчёркнутый символ в тексте указывает на то, что следующий символ должен использоваться для мнемонической клавиши.
Параметры
menu_item | ||
setting |
|
С: 2.16
gtk_menu_item_set_submenu ()
void gtk_menu_item_set_submenu (GtkMenuItem *menu_item,GtkWidget *submenu);
Устанавливает или заменяет подменю пункта меню или удаляет его, когда передаётся NULL подменю.
Параметры
menu_item | ||
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 |
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” gchar *
Устанавливает путь акселератора элемента меню, с помощью которого можно определить и сохранить в постоянном хранилище динамические изменения акселератора элемента меню, вызванные пользователем.
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.14
Свойство “label”
“label” gchar *
Текст для метки дочернего элемента.
Флаги: Чтение / Запись
Значение по умолчанию: ""
С версии: 2.16
Свойство “right-justified”
“right-justified” gboolean
Указывает, выровнен ли элемент меню по правому краю панели меню.
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.14
Подробное описание свойств стиля
Свойство стиля “arrow-scaling”
“arrow-scaling” gfloat
Количество используемого места стрелкой по отношению к размеру шрифта элемента меню.
GtkMenuItem:arrow-scaling устарело с версии 3.20 и не должно использоваться в новых кодах.
используйте стандартные свойства min-width/min-height CSS для узла стрелки; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: [0,2]
Значение по умолчанию: 0.8
Свойство стиля “arrow-spacing”
“arrow-spacing” gint
Интервал между меткой элемента меню и стрелкой подменю.
GtkMenuItem:arrow-spacing устарело с версии 3.20 и не должно использоваться в новых кодах.
используйте стандартное свойство отступа margin CSS для узла стрелки; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 10
Свойство стиля “horizontal-padding”
“horizontal-padding” gint
Отступ слева и справа от элемента меню.
GtkMenuItem:horizontal-padding устарело с версии 3.8 и не должно использоваться в новых кодах.
используйте стандартное свойство отступа padding CSS (через объекты, такие как GtkStyleContext и GtkCssProvider); значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 0
Свойство стиля “selected-shadow-type”
“selected-shadow-type” GtkShadowType
Тип тени при выборе элемента.
GtkMenuItem:selected-shadow-type устарело с версии 3.20 и не должно использоваться в новых кодах.
Используйте CSS для определения тени; значение этого свойства стиля игнорируется.
Флаги: Чтение
Значение по умолчанию: GTK_SHADOW_NONE
Свойство стиля “toggle-spacing”
“toggle-spacing” gint
Интервал между значком меню и меткой.
GtkMenuItem:toggle-spacing устарело с версии 3.20 и не должно использоваться в новых кодах.
используйте стандартное свойство отступа margin CSS для узлов галочки или радиокнопки; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 5
Свойство стиля “width-chars”
“width-chars” gint
Минимальная желаемая ширина элемента меню в символах.
GtkMenuItem:width-chars устарело с версии 3.20 и не должно использоваться в новых кодах.
Используйте стандартное свойство CSS min-width; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 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, gint 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.20/GtkMenuItem.html