Читаем Основы программирования в Linux полностью

  GTK_SIGNAL_FUNC(delete_event), NULL);

 label1 = gtk_label_new("Label 1");

 label2 = gtk_label_new("Label 2");

 label3 = gtk_label_new("Label 3");

 hbox = gtk_hbox_new(TRUE, 5);

 vbox = gtk_vbox_new(FALSE, 10);

 gtk_box_pack_start(GTK_BOX(vbox), label1, TRUE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(vbox), label2, TRUE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox), label3, FALSE, FALSE, 5);

 gtk_container_add(GTK_CONTAINER(window), hbox);

 gtk_widget_show_all(window);

 gtk_main;

 return 0;

}

Когда вы выполните эту программу, то увидите следующую схему расположения виджетов-меток в вашем окне (рис. 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+, нужно понять, как наилучшим образом использовать имеющиеся в комплекте виджеты.

<p>Виджеты GTK+</p>

В этом разделе мы рассмотрим API самых популярных виджетов GTK+, которые вы будете применять чаще всего в своих приложениях.

<p><emphasis>GtkWindow</emphasis></p>

GtkWindow — базовый элемент всех приложений GTK+. До сих пор вы использовали его для хранения своих виджетов.

GtkWidget

 +---- GtkContainer

        +---- GtkBin

               +---- GtkWindow

Существуют десятки вызовов API GtkWindow, но далее приведены функции, заслуживающие особого внимания.

GtkWidget* gtk_window_new(GtkWindowType type);

void gtk_window_set_title(GtkWindow *window, const gchar *title);

void gtk_window_set_position(GtkWindow *window, GtkWindowPosition position);

void gtk_window_set_default_size(GtkWindow *window, gint width, gint height);

void gtk_window_resize(GtkWindow *window, gint width, gint height);

void gtk_window_set_resizable(GtkWindow *window, gboolean resizable);

void gtk_window_present(GtkWindow *window);

void gtk_window_maximize(GtkWindow *window);

void gtk_window_unmaximize(GtkWindow *window);

Как вы видели, функция gtk_window_new создает в памяти новое пустое окно. Заголовок окна не задан и размер и местоположение окна не определены. Обычно вы будете заполнять окно виджетами и задавать меню и панель инструментов перед выводом окна на экран с помощью вызова функции gtk_widget_show.

Функция gtk_window_set_title изменяет текст полосы заголовка, информируя оконный менеджер запроса.

Примечание

Поскольку за отображение оформления окна отвечает оконный менеджер, а не библиотека GTK+, шрифт, цвет и размер текста зависят от вашего выбора оконного менеджера.

Функция gtk_window_setposition управляет начальным местоположением на экране. Параметр position может принимать пять значений, перечисленных в табл. 16.2.

Таблица 16.2

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT