Spec-Zone.ru › GTK 3.22

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

Сигналы

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

элемент меню 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”               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 и не должно использоваться в новом коде.

Используйте стандартные свойства 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)

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

См. также

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

Spec-Zone.ru

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