gtkmm (gtkmm)

Перейти к навигации Перейти к поиску
Gtkmm
Логотип программы Gtkmm
Скриншот программы Gtkmm
Тип GTK software binding[вд], библиотека функций и библиотека виджетов[вд]
Написана на C++
Операционные системы Unix-подобная операционная система, Windows и macOS
Последняя версия
Репозиторий gitlab.gnome.org/GNOME/g…
Лицензия GNU Lesser General Public License
Сайт gtkmm.org
Логотип Викисклада Медиафайлы на Викискладе

gtkmm (ранее известный как gtk-- или gtk minus minus) — официальный C++-интерфейс для популярной GUI-библиотеки GTK. Включает слоты и сигналы с проверкой типов во время компиляции (благодаря библиотеке libsigc++[англ.]), наследование виджетов с использованием стандартного способа C++ и полный набор виджетов, предоставляемых GTK. Графический интерфейс программы может создаваться программно или с использованием Glade.

Библиотека gtkmm является свободным программным обеспечением и распространяется на условиях GNU LGPL.

Особенности

[править | править код]

Основные возможности gtkmm:

Примеры программ

[править | править код]

Создание пустого окна

[править | править код]
#include <gtkmm.h>

int main(int argc, char* argv[])
{
    auto application = Gtk::Application::create(argc, argv);
    Gtk::Window window;
    return application->run(window);
}

Компиляция:

   g++ file_name.cpp -o file_name `pkg-config gtkmm-3.0 --cflags --libs`
//HelloWorldWindow.h

#ifndef HELLOWORLDWINDOW_H
#define HELLOWORLDWINDOW_H

#include <gtkmm/window.h>
#include <gtkmm/button.h>

// Наследовать новый виджет окна от существующего.
// Это окно будет содержать только кнопку с надписью "Hello World".
class HelloWorldWindow : public Gtk::Window
{
  public:
    HelloWorldWindow();

  protected:
    Gtk::Button hello_world;
};

#endif
//HelloWorldWindow.cc

#include <iostream>
#include "HelloWorldWindow.h"

HelloWorldWindow::HelloWorldWindow() : hello_world("Hello World")
{
    // Задать заголовок окна.
    set_title("Hello World");

    // Добавить кнопку к окну.
    add(hello_world);

    // Обрабатывать клик.
    hello_world.signal_clicked().connect([] () {
          std::cout << "Hello world" << std::endl;
    });
    // Отобразить дочерние виджеты окна.
    show_all_children();
}
//main.cc

#include <gtkmm/main.h>
#include "HelloWorldWindow.h"

int main(int argc, char *argv[]) 
{
    // Инициализация
    Gtk::Main kit(argc, argv);

    // Создание объекта окна
    HelloWorldWindow example;

    // Main-цикл gtkmm
    Gtk::Main::run(example);
    return 0;
}

Приведенная выше программа создаст окно с кнопкой «Hello World». При нажатии на кнопку «Hello world» выводится на стандартный вывод.

Программа запускается с помощью следующих команд:

$ g++ -std=c++11 *.cc -o example `pkg-config gtkmm-3.0 --cflags --libs`
$ ./example

Обычно это делается с помощью простого make-файла.

Примечания

[править | править код]