GtkEventBox
GtkEventBox — Виджет, используемый для перехвата событий для виджетов, у которых нет собственного окна
Функции
Свойства
| gboolean | above-child | Чтение/Запись |
| gboolean | visible-window | Чтение/Запись |
Типы и значения
| struct | GtkEventBox |
| struct | GtkEventBoxClass |
Иерархия объектов
GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkContainer ╰── GtkBin ╰── GtkEventBox
Реализованные интерфейсы
GtkEventBox реализует AtkImplementorIface и GtkBuildable.
Инклюды
#include <gtk/gtk.h>
Описание
Виджет GtkEventBox — это подкласс GtkBin, который также имеет собственное окно. Он полезен, так как позволяет перехватывать события для виджетов, у которых нет собственного окна.
Функции
gtk_event_box_new ()
GtkWidget *
gtk_event_box_new (void); Создаёт новый GtkEventBox.
Возвращает
новый GtkEventBox
gtk_event_box_set_above_child ()
void gtk_event_box_set_above_child (GtkEventBox *event_box,gboolean above_child);
Устанавливает, размещается ли окно event box над окнами его дочернего элемента, а не под ним. Если окно расположено сверху, все события внутри event box попадают в event box. Если окно расположено снизу, события в окнах дочерних виджетов сначала попадают в этот виджет, а затем в его родителя.
По умолчанию окно расположено под дочерним элементом.
Параметры
event_box | GtkEventBox | |
above_child |
|
С момента: 2.4
gtk_event_box_get_above_child ()
gboolean
gtk_event_box_get_above_child (GtkEventBox *event_box); Возвращает, расположено ли окно event box над или под окнами его дочернего элемента. Подробнее см. gtk_event_box_set_above_child().
Параметры
event_box | GtkEventBox |
Возвращает
TRUE, если окно event box расположено над окном дочернего элемента
С момента: 2.4
gtk_event_box_set_visible_window ()
void gtk_event_box_set_visible_window (GtkEventBox *event_box,gboolean visible_window);
Устанавливает, использует ли event box видимое или невидимое дочернее окно. По умолчанию используются видимые окна.
В event box с невидимым окном окно, созданное event box, является окном GDK_INPUT_ONLY, что означает, что оно невидимо и служит только для приема событий.
Event box с видимым окном создаёт видимое (GDK_INPUT_OUTPUT) окно, которое выступает в качестве родительского окна для всех виджетов, содержащихся в event box.
В целом, вам следует делать event box невидимым, если вы просто хотите перехватить события. Создание видимого окна может вызвать артефакты, которые видны пользователю, особенно если пользователь использует тему с градиентами или пиктограммами.
Основная причина создания event box без input-only — это возможность установить другой цвет фона или рисовать на нём.
Есть одна неожиданная проблема для невидимого event box, у которого окно расположено под дочерним элементом. (См. gtk_event_box_set_above_child().) Поскольку input-only окно не является предком ни для каких окон, созданных дочерними виджетами event box, события на этих окнах не передаются через оконную систему, а только GTK+. Практическим следствием этого является то, что если событие не находится в маске событий для дочернего окна (см. gtk_widget_add_events()), оно не будет получено event box.
Эта проблема не возникает для видимых event box, так как в этом случае окно event box фактически является предком дочерних окон, а не просто находится в одном месте на экране.
Параметры
event_box | GtkEventBox | |
visible_window |
|
С момента: 2.4
gtk_event_box_get_visible_window ()
gboolean
gtk_event_box_get_visible_window (GtkEventBox *event_box); Возвращает, имеет ли event box видимое окно. Подробнее см. gtk_event_box_set_visible_window().
Параметры
event_box | GtkEventBox |
Возвращает
TRUE, если окно event box видимое
С момента: 2.4
Типы и значения
struct GtkEventBox
struct GtkEventBox;
struct GtkEventBoxClass
struct GtkEventBoxClass {
GtkBinClass parent_class;
};
Члены
Подробное описание свойств
Свойство “above-child”
“above-child” gboolean
Указывает, находится ли окно перехвата событий eventbox над окном дочернего виджета, а не под ним.
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “visible-window”
“visible-window” gboolean
Указывает, является ли event box видимым, а не невидимым и используемым только для перехвата событий.
Флаги: Чтение/Запись
Значение по умолчанию: TRUE
© 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/GtkEventBox.html