Чтение онлайн

на главную - закладки

Жанры

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

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {

 GtkWidget *window1; // главное окно

 GtkWidget *event_box1; // eventbox

 GtkWidget *label; // надпись

 /* Инициализируем GTK */

 gtk_init( &argc, &argv );

 /* Создаем окно с заголовком "Надпись" */

 window1 = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_window_set_title(GTK_WINDOW(window1), "Надпись");

 /*
Устанавливаем реакцию на закрытие окна */

 gtk_signal_connect(GTK_OBJECT(window1), "destroy",

GTK_SIGNAL_FUNC(gtk_exit), NULL );

 /* устанавливаем ширину рамки контейнера — окна */

 gtk_container_set_border_width(GTK_CONTAINER(window1), 10);

 /* создаем event_box */

 event_box1 = gtk_event_box_new;

 /* помещаем event_box в контейнер */

 gtk_container_add(GTK_CONTAINER(window1), event_box1);

 /* отображаем event_box */

 gtk_widget_show(event_box1);

 /* создаем надпись */

 label = gtk_label_new(" -== Click here to exit. ==- ");

 /* помещаем надпись в контейнер event_box */

 gtk_container_add(GTK_CONTAINER(event_box1), label);

 /* отображаем окно */

 gtk_widget_show(label);

 /* устанавливаем реакцию GtkLabel на щелчок */

 /*(при щелчке - выход) */

 gtk_widget_set_events(event_box1, GDK_BUTTON_PRESS_MASK);

 gtk_signal_connect(GTK_OBJECT(event_box1), "button_press_event",

GTK_SIGNAL_FUNC(gtk_exit), NULL);

 gtk_widget_realize(event_box1);

 /* изменяем курсор над надписью — курсор превратится в руку */

 gdk_window_set_cursor(event_box1->window, gdk_cursor_new(GDK_HAND1));

 /* отображаем окно */

 gtk_widget_show(window1);

 gtk_main;

 return 0;

}

Откомпилируйте и запустите программу. Над надписью указатель мыши должен принять вид руки (как в браузере над ссылкой). При щелчке на надписи программа будет закрыта.

Если вы хотите создать надпись на русском языке, то подключите заголовок locale.h и вызовите функцию:

setlocale(LC_ALL, "ru_RU.KOI8-R");

Поделиться:
Популярные книги

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Держать удар

Иванов Дмитрий
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Держать удар

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

По дороге на Оюту

Лунёва Мария
Фантастика:
космическая фантастика
8.67
рейтинг книги
По дороге на Оюту

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Не лечи мне мозги, МАГ!

Ордина Ирина
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.00
рейтинг книги
Не лечи мне мозги, МАГ!

Измена. Право на семью

Арская Арина
Любовные романы:
современные любовные романы
5.20
рейтинг книги
Измена. Право на семью

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Неудержимый. Книга XXI

Боярский Андрей
21. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXI