Базовые GTK программы

Окно с кнопкой

Этот пример демонстрирует, как создать окно верхнего уровня, установить его заголовок, размер и положение, как добавить кнопку в это окно и как связать сигналы с действиями.

using Gtk;

int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "Первая GTK программа";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size (350, 70);
    window.destroy.connect (Gtk.main_quit);

    var button = new Button.with_label ("Нажми меня!");
    button.clicked.connect (() => {
        button.label = "Спасибо!";
    });

    window.add (button);
    window.show_all ();

    Gtk.main ();
    return 0;
}

Все классы GTK находятся внутри пространства имен Gtk . Вы должны инициализировать каждую программу GTK с помощью Gtk.init ().

Конечно при небольшом количестве подключенных пространств имен можно писать и просто init() без Gtk.

Скомпилируйте и запустите

Настройка иконки приложения

Синхронизация виджетов

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

Панель инструментов, скроллинг текста и выбор файла

Простой просмотрщик текстовых файлов:

Если вы хотите добавить дополнительные функции или изменить поведение диалога, вы можете создать подкласс FileChooserDialog. Например этот запоминает последнюю папку:

Создание своего диалогового окна

Этот пример демонстрирует, как создать свой диалог, наследуясь от Dialog.

Своё кастомное диалоговое окно гораздо проще создать не из кода а из Glade

Загрузка пользовательского интерфейса из файла XML

Вместо ручного кодирования пользовательского интерфейса вашего приложения вы можете создать его с помощью удобного конструктора пользовательского интерфейса, такого как Glade, и сохранить его в виде файла XML. Ваше приложение может загрузить пользовательский интерфейс из этого файла во время выполнения с помощью класса Gtk.Builder . Он может даже подключить все сигналы к их методам, если вы объявили их в Glade. Вот пример файла пользовательского интерфейса: sample.ui

Этот пример кода работает с файлом UI, связанным выше:

Подключение сигналов

...

Last updated

Was this helpful?