Окно является базовым элементом любого приложения на основе GTK+. Это виджет, в который могут упаковываться другие виджеты. По этой причине данный виджет является контейнерным.
Без дополнительных виджетов в данный контейнерный виджет может быть упакован ровно один виджет.
Для создания виджета окна может использоваться следующий конструктор:
GtkWidget *window = gtk_window_new(type);
Параметр type может не использоваться при отсутствии необходимости в нем, но чаще всего с помощью него передается значение GTK_WINDOW_TOPLEVEL для создания обычных окон приложения.
Текст заголовка окна может задаваться с помощью следующего метода:
gtk_window_set_title(GTK_WINDOW(window), "Window");
По умолчанию GTK+ не отображает окно. Для отображения окна разработчику необходимо явно потребовать этого с помощью следующего метода:
gtk_widget_show(window);
При использовании данного метода будет отображено лишь само окно без упакованных в него виджетов, в отношении каждого из которых следует также вызвать этот метод.
Альтернативным методом является метод:
gtk_widget_show_all(window);
Примечание: рекомендуется использовать метод gtk_widget_show_all(window) сразу же после создания всех виджетов окна. Этот метод даже на медленных машинах гарантированно отобразит все виджеты одновременно, а не по мере их обработки.
Окна могут скрываться с помощью метода:
gtk_widget_hide(window);
Для программного закрытия окна может использоваться метод:
gtk_window_close(GTK_WINDOW(window));
Установка начальных ширины и высоты окна осуществляется с помощью следующего метода:
gtk_window_set_default_size(GTK_WINDOW(window), width, height);
В зависимости от принципа работы приложения состояние окна может меняться с помощью следующих методов:
gtk_window_maximize(GTK_WINDOW(window));
gtk_window_unmaximize(GTK_WINDOW(window));
gtk_window_fullscreen(GTK_WINDOW(window));
gtk_window_unfullscreen(GTK_WINDOW(window));
Для проверки факта разворота окна на весь экран может использоваться следующий метод:
gtk_window_is_maximized(GTK_WINDOW(window));
Для того, чтобы сделать окно дочерним окном другого окна предназначен следующий метод:
gtk_window_set_transient_for(GTK_WINDOW(window), parent);
Для установки иконки окна используются следующие методы:
gtk_window_set_icon(GTK_WINDOW(window), icon);
gtk_window_set_icon_from_file(GTK_WINDOW(window), filename);
Если окно является основным окном приложения, следующие методы позволят установить иконку как его, так и всех дочерних окон:
gtk_window_set_default_icon(GTK_WINDOW(window), icon);
gtk_window_set_default_icon_from_file(GTK_WINDOW(window), filename);
Это код простого приложения, создающего окно:
Загрузить исходный код примера
Он может быть скомпилирован с помощью компилятора GCC путем исполнения следующей команды:
$ gcc window.c `pkg-config --libs --cflags gtk+-3.0` -o window
Также вы можете использовать компилятор CLang:
$ clang window.c `pkg-config --libs --cflags gtk+-3.0` -o window