GtkAccelLabel
GtkAccelLabel — метка, отображающая сочетание клавиш слева от текста
Функции
| GtkWidget * | gtk_accel_label_new () |
| void | gtk_accel_label_set_accel_closure () |
| GtkWidget * | gtk_accel_label_get_accel_widget () |
| void | gtk_accel_label_set_accel_widget () |
| guint | gtk_accel_label_get_accel_width () |
| void | gtk_accel_label_set_accel () |
| void | gtk_accel_label_get_accel () |
| gboolean | gtk_accel_label_refetch () |
Свойства
| GClosure * | accel-closure | Чтение / Запись |
| GtkWidget * | accel-widget | Чтение / Запись |
Типы и значения
| struct | GtkAccelLabel |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkMisc
╰── GtkLabel
╰── GtkAccelLabel
Реализованные интерфейсы
GtkAccelLabel реализует AtkImplementorIface и GtkBuildable.
Включаемые файлы
#include <gtk/gtk.h>
Описание
Компонент GtkAccelLabel — подкласс GtkLabel, который также отображает сочетание клавиш справа от текста метки, например, «Ctrl+S». Он часто используется в меню для отображения сочетаний клавиш для команд.
Сочетание клавиш для отображения обычно не устанавливается явно (хотя это можно сделать с помощью gtk_accel_label_set_accel()). Вместо этого, GtkAccelLabel отображает сочетания клавиш, которые были добавлены к определённому элементу. Этот элемент устанавливается с помощью вызова gtk_accel_label_set_accel_widget().
Например, элемент GtkMenuItem может иметь сочетание клавиш, которое вызывает сигнал «activate», когда нажата комбинация «Ctrl+S». Создаётся GtkAccelLabel и добавляется в GtkMenuItem, а затем вызывается gtk_accel_label_set_accel_widget() со значением GtkMenuItem как вторым аргументом. Теперь GtkAccelLabel будет отображать «Ctrl+S» после своего текста.
Обратите внимание, что создание GtkMenuItem с помощью gtk_menu_item_new_with_label() (или одной из похожих функций для GtkCheckMenuItem и GtkRadioMenuItem) автоматически добавляет GtkAccelLabel в GtkMenuItem и вызывает gtk_accel_label_set_accel_widget() для его настройки.
GtkAccelLabel будет отображать только сочетания клавиш, для которых установлено GTK_ACCEL_VISIBLE (см. GtkAccelFlags). GtkAccelLabel может отображать несколько сочетаний клавиш и даже имена сигналов, хотя чаще всего используется для отображения только одного сочетания клавиш.
Создание простого элемента меню с сочетанием клавиш.
CSS узлы
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GtkWidget *menu = gtk_menu_new ();
GtkWidget *save_item;
GtkAccelGroup *accel_group;
// Create a GtkAccelGroup and add it to the window.
accel_group = gtk_accel_group_new ();
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
// Create the menu item using the convenience function.
save_item = gtk_menu_item_new_with_label ("Save");
gtk_widget_show (save_item);
gtk_container_add (GTK_CONTAINER (menu), save_item);
// Now add the accelerator to the GtkMenuItem. Note that since we
// called gtk_menu_item_new_with_label() to create the GtkMenuItem
// the GtkAccelLabel is automatically set up to display the
// GtkMenuItem accelerators. We just need to make sure we use
// GTK_ACCEL_VISIBLE here.
gtk_widget_add_accelerator (save_item, "activate", accel_group,
GDK_KEY_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);Как и GtkLabel, GtkAccelLabel имеет главный CSS узел с именем label. Он добавляет дочерний узел с именем accelerator.
Функции
gtk_accel_label_new ()
GtkWidget *
gtk_accel_label_new (const gchar *string); Создаёт новый GtkAccelLabel.
Параметры
строка | строка метки. Должна быть не пустой. |
Возвращаемое значение
новый GtkAccelLabel.
gtk_accel_label_set_accel_closure ()
void gtk_accel_label_set_accel_closure (GtkAccelLabel *accel_label,GClosure *accel_closure);
Устанавливает обработчик, за которым должен следить этот ярлык ускорителя. Обработчик должен быть подключен к группе ускорителей; см. gtk_accel_group_connect(). Передача NULL для accel_closure отсоединит accel_label от текущего обработчика, если таковой имеется.
Параметры
accel_label | ||
accel_closure | обработчик для отслеживания изменений ускорителя, или | [nullable] |
gtk_accel_label_get_accel_widget ()
GtkWidget *
gtk_accel_label_get_accel_widget (GtkAccelLabel *accel_label); Возвращает виджет, за которым следит этот ярлык ускорителя. См. gtk_accel_label_set_accel_widget().
Параметры
accel_label |
Возвращаемое значение
объект, отслеживаемый ярлыком ускорителя, или NULL.
[nullable][transfer none]
gtk_accel_label_set_accel_widget ()
void gtk_accel_label_set_accel_widget (GtkAccelLabel *accel_label,GtkWidget *accel_widget);
Устанавливает виджет, за которым этот ярлык ускорителя должен следить. Передача NULL для accel_widget отсоединит accel_label от текущего виджета, если таковой имеется.
Параметры
accel_label | ||
accel_widget | отслеживаемый виджет, или | [nullable] |
gtk_accel_label_get_accel_width ()
guint
gtk_accel_label_get_accel_width (GtkAccelLabel *accel_label); Возвращает ширину, необходимую для отображения клавиши(ей) ускорителя. Это используется меню для выравнивания всех виджетов GtkMenuItem, и приложениям обычно не нужно это использовать.
Параметры
accel_label |
Возвращаемое значение
ширина, необходимая для отображения клавиши(ей) ускорителя.
gtk_accel_label_set_accel ()
void gtk_accel_label_set_accel (GtkAccelLabel *accel_label,guint accelerator_key,GdkModifierType accelerator_mods);
Вручную устанавливает keyval и mask модификаторов в качестве ускорителя, отображаемого accel_label .
Если keyval и модификатор явно установлены, то эти значения используются независимо от какого-либо связанного обработчика ускорителей или виджета.
Указание accelerator_key равным 0 удаляет ручную установку.
Параметры
accel_label | ||
accelerator_key | keyval, или 0 | |
accelerator_mods | маска модификаторов для ускорителя |
С: 3.6
gtk_accel_label_get_accel ()
void gtk_accel_label_get_accel (GtkAccelLabel *accel_label,guint *accelerator_key,GdkModifierType *accelerator_mods);
Получает keyval и mask модификаторов, установленные с помощью gtk_accel_label_set_accel().
Параметры
accel_label | ||
accelerator_key | место для возвращения keyval. | [out] |
accelerator_mods | место для возвращения маски модификаторов. | [out] |
С: 3.12
gtk_accel_label_refetch ()
gboolean
gtk_accel_label_refetch (GtkAccelLabel *accel_label); Пересоздаёт строку, представляющую клавиши ускорителя. Это не должно потребоваться, так как строка автоматически обновляется всякий раз, когда ускорители добавляются или удаляются из связанного виджета.
Параметры
accel_label |
Возвращаемое значение
всегда возвращает FALSE.
Типы и значения
struct GtkAccelLabel
struct GtkAccelLabel;
Структура GtkAccelLabel содержит только приватные данные и должна использоваться через соответствующие функции.
Подробное описание свойств
Свойство “accel-closure”
“accel-closure” GClosure *
Обработчик, который следует отслеживать для изменений ускорителя.
Владелец: GtkAccelLabel
Флаги: Чтение/Запись
Свойство “accel-widget”
“accel-widget” GtkWidget *
Виджет, за которым следует отслеживать изменения ускорителя.
Владелец: GtkAccelLabel
Флаги: Чтение/Запись
См. также
© 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/GtkAccelLabel.html