вы выполните эту программу, то увидите следующую схему расположения виджетов-меток в вашем окне (рис. 16.6).
Рис. 16.6
Как это работает
Вы создаете два виджета упаковочных контейнеров:
hbox
и
vbox
. С помощью функции
gtk_box_pack_start
вы заполняете
vbox
виджетами
label1
и
label2
, причем
label2
располагается у нижнего края контейнера, потому что вставляется после
label1
. Далее контейнер
vbox
целиком наряду с меткой
label3
вставляется в контейнер
hbox
.
В заключение
hbox
добавляется в окно и выводится на экран с помощью функции
gtk_widget_show_all
.
Схему размещения упаковочного контейнера легче понять с помощью блок-схемы, показанной на рис. 16.7.
Рис. 16.7
Познакомившись с виджетами, сигналами, обратными вызовами и виджетами-контейнерами, вы рассмотрели основы комплекта инструментов GTK+. Но для того чтобы стать программистом, профессионально применяющим GTK+, нужно понять, как наилучшим образом использовать имеющиеся в комплекте виджеты.
Виджеты GTK+
В этом разделе мы рассмотрим API самых популярных виджетов GTK+, которые вы будете применять чаще всего в своих приложениях.
GtkWindow
GtkWindow
— базовый элемент всех приложений GTK+. До сих пор вы использовали его для хранения своих виджетов.
GtkWidget
+---- GtkContainer
+---- GtkBin
+---- GtkWindow
Существуют десятки вызовов API
GtkWindow
, но далее приведены функции, заслуживающие особого внимания.
создает в памяти новое пустое окно. Заголовок окна не задан и размер и местоположение окна не определены. Обычно вы будете заполнять окно виджетами и задавать меню и панель инструментов перед выводом окна на экран с помощью вызова функции
gtk_widget_show
.
Функция
gtk_window_set_title
изменяет текст полосы заголовка, информируя оконный менеджер запроса.
Примечание
Поскольку за отображение оформления окна отвечает оконный менеджер, а не библиотека GTK+, шрифт, цвет и размер текста зависят от вашего выбора оконного менеджера.
Функция
gtk_window_setposition
управляет начальным местоположением на экране. Параметр
position
может принимать пять значений, перечисленных в табл. 16.2.
Таблица 16.2
Параметр
position
Описание
GTK_WIN_POS_NONE
Окно располагается по усмотрению оконного менеджера
GTK_WIN_POS_CENTER
Окно центрируется на экране
GTK_WIN_POS_MOUSE
Расположение окна задаётся указателем мыши
GTK_WIN_POS_CENTER_ALWAYS
Окно остается отцентрированным независимо от его размера
GTK_WIN_POS_CENTER_ON_PARENT
Окно центрируется относительно родительского окна (удобно для диалоговых окон)
Функция
gtk_window_set_default_size
задает окно на экране в единицах отображения GTK+. Явное задание размера окна гарантирует, что содержимое окна не будет закрыто чем-либо или скрыто. Для того чтобы изменить размеры окна после его вывода на экран, можно воспользоваться функцией
gtk_window_resize
. По умолчанию пользователь может изменить размеры окна, перемещая обычным способом его границу мышью. Если вы хотите помешать этому, можно вызвать функцию
gtk_window_set_resizeable
, приравненную FALSE.
Для того чтобы убедиться в том, что ваше окно присутствует на экране и видно пользователю, т.е. не свернуто или скрыто, подойдет функция
gtk_window_present
. Она полезна для диалоговых окон, т.к. позволяет убедиться в том, что окна не свернуты, когда вам нужен какой-либо пользовательский ввод. В противном случае, для раскрытия окна на весь экран и его сворачивания у вас есть функции