Linux: Полное руководство
Шрифт:
♦ GDK_ENTER_NOTIFY — указатель мыши в пределах объекта (виджита);
♦ GDK_LEAVE_NOTIFY — указатель мыши вышел за пределы виджита;
♦ GDK_FOCUS_CHANGE — изменения фокуса ввода;
♦ GDK_OTHER_EVENT — другое событие.
23.3.5. Виджит событий — EventBox
Далеко не все виджиты связаны с окнами. Например, GtkLabel (надпись), GtkTable (контейнер-таблица), GtkHBox (горизонтальный контейнер), GtkVBox (вертикальный контейнер) и некоторые другие с окнами не связаны.
Если нужно, чтобы эти виджиты реагировали на определенные сигналы, нужно
Листинг 23.5. Виджит EventBox
Откомпилируйте и запустите программу. Над надписью указатель мыши должен принять вид руки (как в браузере над ссылкой). При щелчке на надписи программа будет закрыта.
Если вы хотите создать надпись на русском языке, то подключите заголовок locale.h и вызовите функцию:
Конечно, значение локали у вас может быть другим. Эту функцию нужно вызвать ДО инициализации GTK+.
Рис. 23.2. Надпись
23.4. Виджиты
23.4.1. Рождение, смерть и состояния виджита
После создания виджита управление ресурсами и памятью, необходимыми ему, выполняется автоматически. Виджиты уничтожаются также автоматически — при разрушении главного окна. Но иногда бывает нужно самостоятельно уничтожить виджит. Сделать это можно с помощью функции:
Эта функция объявлена в файле gtk/gtkwidget.h. При уничтожении виджита также уничтожаются все его дочерние виджиты.
Если вы освобождаете виджит из контейнера функцией:
то виджит также будет разрушен.
Иногда нужно переместить виджит из одного контейнера в другой без его уничтожения. Это можно сделать так (мы будем перемещать надпись):
«Спрятать» виджит можно с помощью функции
Отобразить виджит снова поможет функция gtk_widget_show.
Виджит может находиться в одном из состояний:
♦ GTK_STATE_NORMAL — нормальное;
♦ GTK_STATE_ACTIVE — активное (например, нажата кнопка);
♦ GTK_STATE_PRELIGTH — над виджитом находится указатель мыши;
♦ GTK_STATE_SELECTED — виджит выбран (установлен фокус ввода);
♦ GTK_STATE_INSENSITIVE — виджит не реагирует на ввод (сигналы).
Определить состояние виджита можно так:
или с помощью макроса:
описанного в файле gtk/gtkwidget.h.
Сделать виджит неактивным можно так: