Spec-Zone.ru › GTK 3.24

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

если TRUE элемент меню будет выровнен по правому краю, если он добавлен в панель меню

gtk_menu_item_get_right_justified ()

gboolean
gtk_menu_item_get_right_justified (GtkMenuItem *menu_item);

gtk_menu_item_get_right_justified устарел начиная с версии 3.2 и не должен использоваться в новом коде.

См. gtk_menu_item_set_right_justified()

Получает, выровнен ли элемент меню по правому краю панели меню.

Параметры

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

TRUE если подчёркивания в тексте обозначают мнемоники

С версии: 2.16

gtk_menu_item_set_submenu ()

void
gtk_menu_item_set_submenu (GtkMenuItem *menu_item,
                           GtkWidget *submenu);

Устанавливает или заменяет подменю элемента меню, или удаляет его, если в качестве подменю передаётся NULL.

Параметры

menu_item

элемент меню GtkMenuItem

submenu

подменю, или NULL.

[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

путь к сочетанию клавиш, соответствующий функциональности этого пункта меню, или NULL для сброса текущего пути.

[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

GtkMenuItem

Возвращаемое значение

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

GtkMenuItem

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 hide_on_activate : 1;

Если TRUE, то меню всегда должно скрываться, когда элемент GtkMenuItem активируется. В противном случае, это зависит от вызывающего кода.

activate ()

Сигнал, генерируемый при активации элемента.

activate_item ()

Сигнал, генерируемый при активации элемента, а также если у элемента-меню есть подменю.

toggle_size_request ()

toggle_size_allocate ()

set_label ()

Устанавливает text в метке элемента GtkMenuItem.

get_label ()

Получает text из метки элемента GtkMenuItem.

select ()

Сигнал, генерируемый при выборе элемента.

deselect ()

Сигнал, генерируемый при отмене выбора элемента.

Подробное описание свойств

Свойство “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)

Флаги: Выполняется первым

См. также

GtkBin, GtkMenuShell

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API