23.3.5. Виджит событий — EventBox
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");
Конечно, значение локали у вас может быть другим. Эту функцию нужно вызвать ДО инициализации GTK+.
Рис. 23.2. Надпись
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Регистрация событий
Регистрация событий Службы часто выполняются, внешне ничем себя не проявляя, без диалогового взаимодействия с пользователем. Некоторые службы создают консоль, окно сообщений[34] или окно для взаимодействия с пользователем, но лучше всего записывать информацию о событиях
Обработка событий
Обработка событий Теперь самое время рассмотреть один ключевой вопрос Web-программирования: события, их возникновение и
Обработка событий
Обработка событий Теперь самое время рассмотреть один ключевой вопрос Web-программирования: события, их возникновение и обработка. Понятие события и его обработки Рассматривая примеры Web-сценариев, мы исходили из предположения, что они выполняются при загрузке
25.3. Виджит Yes-no
25.3. Виджит Yes-no Часто встречаются диалоговые окна, спрашивающие пользователя, согласен ли он с действиями программы, например, «Вы точно хотите выйти?» или «Удалить этот файл?». Пользователю же предлагается два варианта ответа — Да или Нет. Для организации такого диалога
Журнал событий
Журнал событий Служба обеспечивает запись сообщений в стандартные журналы Windows (Система, Приложения, Безопасность), просмотреть которые можно при помощи оснастки eventvwr.msc. Далее в этой книге оснастка Просмотр событий (eventvwr.msc) будет описана подробней. Служба Журнал событий
Просмотр событий
Просмотр событий С помощью оснастки Просмотр событий реализуется возможность просмотра трех системных журналов Windows XP, каждый их которых содержит сведения о том или ином компоненте компьютера: о приложениях, установленных на нем, о работе системных компонентов и о
Журнал событий
Журнал событий С помощью данной политики можно настроить параметры стандартных журналов системы, доступ к которым можно получить с помощью оснастки Просмотр событий. Например, с помощью данной политики можно определить максимальные размеры файлов стандартных журналов
1.1.9. Обработчики событий
1.1.9. Обработчики событий Обработчики события методы объекта. Это означает, что они должны быть методами класса, а не обычной процедурой или функцией (первый параметр должен быть Self). Для наиболее употребимых обработчиков предназначен следующий тип:TNotifyEvent = procedure(sender: TObject)
1.1.10. Сигнализаторы событий
1.1.10. Сигнализаторы событий Сигнализаторы событий требуются для указания обработчику события, что возникло указанное событие, что бы обработчик события смог бы выполнить свои действия. Сигнализаторы обычно виртуальные или динамические методы класса (подобно методу Click)
Глава 7. Обработка событий
Глава 7. Обработка событий События генерируются оконной системой или Qt в ответ на различные действия. Когда пользователь нажимает или отпускает клавишу или кнопку мышки, генерируется событие клавиши клавиатуры или кнопки мышки; когда окно впервые выводится на экран,
Установка фильтров событий
Установка фильтров событий Одним из действительно эффективных средств в модели событий Qt является возможность с помощью некоторого экземпляра объекта QObject контролировать события другого экземпляра объекта QObject еще до того, как они дойдут до последнего.Предположим, что
Программирование обработки событий
Программирование обработки событий Как видно из табл. 10.1, формы и элементы управления могут отвечать на многие события. Но когда форма действительно отвечает на какое-нибудь конкретное событие? Только тогда, когда она имеет соответствующую процедуру для этого события.
Программирование событий excel
Программирование событий excel Реакция на вносимые пользователем изменения стала неотъемлемой частью функционирования электронных таблиц, поэтому написание кода для событий в Excel часто играет более значимую роль, нежели в остальных приложениях пакета Office. Изменение
8.4. Состояние планировщика событий
8.4. Состояние планировщика событий Информация относительно состояния планировщика события для отладки и целей поиска неисправностей может быть получена следующим образом:В MySQL 5.1.11 версиях -debug Вы можете использовать инструкцию SHOW SCHEDULER STATUS.Важно: эта инструкция была
4.3.2. Планирование событий
4.3.2. Планирование событий Для планирования события, которое может состояться в определенный день, предварительно следует выполнить два действия: выбрать календарь, щелкнув по его имени мышью в боковой панели, и выбрать один из трех режимов просмотра: день, неделя, месяц,
Колисниченко Денис Николаевич
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉