Spec-Zone.ru › GTK 3.20

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 ширина символов Чтение

Сигналы

void activate Действие
void activate-item Выполнить сначала
void deselect Выполнить сначала
void select Выполнить сначала
void toggle-size-allocate Выполнить сначала
void toggle-size-request Выполнить сначала

Типы и значения

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

если 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

a GtkMenuItem

Возвращает

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

gtk_menu_item_get_label ()

const gchar *
gtk_menu_item_get_label (GtkMenuItem *menu_item);

Устанавливает text для метки menu_item.

Параметры

menu_item

a 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

a GtkMenuItem

label

Текст, который вы хотите установить

С: 2.16

gtk_menu_item_get_use_underline ()

gboolean
gtk_menu_item_get_use_underline (GtkMenuItem *menu_item);

Проверяет, указывает ли подчёркнутый текст на то, что следующий символ должен использоваться для мнемонической клавиши.

Параметры

menu_item

a 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

a GtkMenuItem

setting

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

С: 2.16

gtk_menu_item_set_submenu ()

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

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

Параметры

menu_item

a 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

a 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”               gchar *

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

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.14

Свойство “label”

  “label”                    gchar *

Текст для метки дочернего элемента.

Флаги: Чтение / Запись

Значение по умолчанию: ""

С версии: 2.16

Свойство “right-justified”

  “right-justified”          gboolean

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

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.14

Свойство “submenu”

  “submenu”                  GtkMenu *

Подменю, прикрепленное к элементу меню, или NULL, если его нет.

Флаги: Чтение / Запись

С версии: 2.12

Свойство “use-underline”

  “use-underline”            gboolean

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

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.16

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

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

Флаги: Выполнить сначала

См. также

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.20/GtkMenuItem.html

Spec-Zone.ru

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