GTK+ — 2. Перша програма
Січень 12th, 2009У цій частині, в межах курсу по вивченню бібліотеки GTK+, ми напишемо, і покрокового розберемо першу просту програму.
Простий приклад
Розпочнемо з дуже простої програми. Вона створює і відображає просте вікно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); gtk_main(); return 0; } |
Зкомпілювати її можна наступною командою:
# gcc -o simple simple.c `pkg-config –libs –cflags gtk+-2.0`
Розбір прикладу
Тепер по пунктам розберемо вищенаведений приклад.
1 | #include <gtk/gtk.h> |
Підключаємо основний заголовочний файл GTK+. Його повинні містити усі програми, написані на GTK+.
1 | gtk_init(&argc, &argv); |
Цей рядок ініціалізує бібліотеку GTK+.
1 2 | GtkWidget *window; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
Тут ми оголошуємо змінну window типу GtkWidget (усі віджети GTK+ успідковуються від GtkWidget), створюємо просте вікно типу GTK_WINDOW_TOPLEVEL (вікно даного типу має рядок заголовку і обрамлення) за допомогою функції gtk_window_new, і присвоємо змінній windows вказівник на нього.
1 | gtk_widget_show(window); |
Показуємо віджет window за допомогою функції gtk_widget_show.
1 | gtk_main(); |
І запускаємо головний цикл GTK+. З цього моменту програма очікуватиме на різні події.
У результаті матимемо таке віконечко:

Функції для роботи з вікнами
І на завершення трішки побавимось з властивостями вікна: змінимо його розмір, заголовок та позицію.
Кожен віджет має свій набір властивостей, як то розмір, позиція, колір тла, заголовок, тощо. Для зміни кожної з них, існує спеціальна функція. Наприклад, для того, щоб змінити заголовок вікна — gtk_window_set_title(), для зміни розміру вікна — gtk_window_set_default_size(), тощо. Також для цього є універсальна функція — g_object_set(), яка приймає три параметри: ім’я віджета, ім’я параметру, який слід змінити, і його нове значення параметру. Власне, парамтерів може бути кілька, тоді вони перераховуються, роздяляючись крапкою, після цього у такій же послідовності йдуть їхні значення.
Щоб зрозуміти, як то всьо працює, трішки розшримо нашу програму:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "GTK+ рулить!"); gtk_window_set_default_size(GTK_WINDOW(window), 250, 180); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_widget_show(window); gtk_main(); return 0; } |
Тут за допомогою трьох функцій ми змінили заголовок вікна, його розмір на позицію на екрані монітора.

Березень 4th, 2009 at 03:40
Чому Gtk ? Чому не Gtkmm!? На плюсах якби легше має бути
Glade (чи інший) UI designer не плануєш навчити використовувати ?
Березень 4th, 2009 at 06:50
Олександре, просто я великий фанат С. Та й значно краще знаю GTK+, ніж його біндинг для С++. Але у планах є і про нього написати. Щодо Glade, то як же без нього?