Linux: Полное руководство
Шрифт:
23.3.
23.3.1. Виджиты
Перед написанием самой простой GTK-программы нужно разобраться с терминологией GTK. Элементы графического интерфейса пользователя — окна, кнопки, поля ввода, переключатели и тому подобное — называются виджитами.
Основным элементом графического интерфейса является окно. Виджиты для размещения в окне помещаются в контейнер. В самом окне выравнивать виджиты можно с помощью вертикальных/горизонтальных боксов или же таблиц. Второй способ более гибок, хотя он может показаться вам сложнее.
Виджиты могут реагировать на сигналы, например, щелчок мышью. При этом вызывается функция-обработчик события (сигнала), если вы определили ее.
Работа с виджитами происходит по такой схеме:
1. создание виджита с помощью одной из функций библиотеки GTK;
2. определение свойств виджита;
3. определение сигналов виджита, если он должен реагировать на сигналы;
4. размещение виджита в контейнере, то есть привязка его к окну;
5. отображение виджита.
Нужно обязательно отобразить виджит, иначе его никто не увидит. Например, следующий фрагмент кода создает виджит — кнопку с текстом — и отображает ее.
Первый оператор создает кнопку (button), второй — добавляет кнопку в контейнер. В данном случае контейнером является наше окно. Виджит window должен быть создан раньше: нельзя создать кнопку без окна. Точнее, можно, но тогда она не будет привязана к какому-либо окну и мы ее не увидим. Функция gtk_widget_show отображает нашу кнопку. Не забудьте отобразить и само окно. Порядок отображения виджитов особой роли не играет, но рекомендуется главное окно отображать в последнюю очередь.
23.3.2.
Сейчас мы напишем программу, которая будет формировать небольшое графическое окошко. Начнем сразу с исходного кода — так будет проще понять, что есть что.
Листинг 23.2. Простое окно (файл first.с)
Сначала мы подключаем заголовочный файл
Обратите внимание, что виджит объявлен, но работать с ним пока нельзя. Сначала (обязательно до вызова первой GTK-функции) нужно вызвать инициализирующую функцию gtk_init и передать ей два два параметра — аргументы функции main. После того, как библиотека инициализирована, нужно вызвать функцию gtk_window_new, которая создает окно (напомню, что пока окно объявлено, но не создано). Теперь, когда виджит окна создан, можно установить его свойства и определить реакцию на сигналы. Установим свойство Title (заголовок) окна. Это делается с помощью функции gtk_window_set_title:
Теперь можно отобразить наше окно:
Чтобы наше приложение могло реагировать на события оконной среды (например, щелчок мыши), нужно вызвать функцию gtk_main. Функции gtk_init и gtk_main должны присутствовать в любой GTK-программе.
Теперь откомпилируем наше приложение. Для этого введем следующую команду в командной строке:
Флаги
Запустим нашу программу в эмуляторе терминала X Window (или оконной среды GNOME/KDE):
Вы увидите окно, изображенное на рис. 23.1.
Рис. 23.1. Простое окно