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 * | метка | Чтение/Запись |
| 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 | элемент меню 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” 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 и не должно использоваться в новом коде.
Используйте стандартные свойства CSS min-width/min-height для узла со стрелкой; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: [0,2]
Значение по умолчанию: 0.8
Свойство стиля “arrow-spacing”
“arrow-spacing” gint
Интервал между меткой пункта меню и стрелкой подменю.
GtkMenuItem:arrow-spacing устарело с версии 3.20 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS margin для узла со стрелкой; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 10
Свойство стиля “horizontal-padding”
“horizontal-padding” gint
Отступы слева и справа пункта меню.
GtkMenuItem:horizontal-padding устарело с версии 3.8 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS padding (через объекты типа 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 и не должно использоваться в новом коде.
Используйте стандартное свойство CSS margin для узлов с флажком или переключателем; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 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.22/GtkMenuItem.html