Linux: Полное руководство
Шрифт:
♦ destroy_event — уничтожение объекта;
♦ key_press_event — нажата клавиша клавиатуры;
♦ key_release_event — клавиша отпущена;
♦ enter_notify_event — указатель мыши вошел в пределы объекта;
♦ leave_notify_event — указатель мыши вышел за пределы объекта;
♦ focus_in_event — объект стал активным (получил фокус);
♦ focus_out_event — объект не активен;
♦ drag_begin_event —
♦ drag_request_event — запрос на перемещение объекта;
♦ drag_end_event — перемещение объекта;
♦ drop_enter_event — объект перемещен.
Наиболее часто используемые события GDK (используются в функции-обработчике) перечислены ниже:
♦ GDK_NOTHING — не произошло никакого события;
♦ GDK_DELETE — удаление;
♦ GDK_DESTROY — уничтожение;
♦ GDK_MOTION_NOTIFY — уведомление о перемещении;
♦ GDK_BUTTON_PRESS — нажата любая кнопка мыши;
♦ GDK_1BUTTON_PRESS — нажатие первой кнопки мыши;
♦ GDK_2BUTTON_PRESS — нажатие второй кнопки мыши;
♦ GDK_3BUTTON_PRESS — нажата третья кнопка;
♦ GDK_BUTTON_RELEASE — кнопка (любая) отпущена;
♦ GDK_KEY_PRESS — нажата клавиша;
♦ GDK_KEY_RELEASE — клавиша отпущена;
♦ GDK_ENTER_NOTIFY — указатель мыши в пределах объекта (виджита);
♦ GDK_LEAVE_NOTIFY — указатель мыши вышел за пределы виджита;
♦ GDK_FOCUS_CHANGE — изменения фокуса ввода;
♦ GDK_OTHER_EVENT — другое событие.
23.3.5. Виджит событий — EventBox
Далеко не все виджиты связаны с окнами. Например, GtkLabel (надпись), GtkTable (контейнер-таблица), GtkHBox (горизонтальный контейнер), GtkVBox (вертикальный контейнер) и некоторые другие с окнами не связаны.
Если нужно, чтобы эти виджиты реагировали на определенные сигналы, нужно использовать виджит EventBox, позволяющий привязать сигнал к не связанному с окном виджиту. Следующая программа демонстрирует привязку события button_press_event к виджиту GtkLabel.
Листинг 23.5. Виджит EventBox
Откомпилируйте и запустите программу. Над надписью указатель мыши должен принять вид руки (как в браузере над ссылкой). При щелчке на надписи программа будет закрыта.
Если вы хотите создать надпись на русском языке, то подключите заголовок locale.h и вызовите функцию: