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

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

Особенности Основные возможности gtkmm: Использование наследования для создания новых виджетов. Слоты и сигналы с проверкой типов во время компиляции. Полиморфизм. Использование стандартной библиотеки C++, в том числе строк, контейнеров и итераторов. Поддержка UTF-8. Управление памятью C++. Агрегирование. Автоматическое освобождение динамически размещаемых виджетов. Использование пространств имен C++. Отсутствие макросов. Кросс-платформенность: Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC++, .Net 2003), Mac OS X (gcc) и другие.

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

Создание пустого окна #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`

Hello World //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-файла.

См. также GTK Qt wxWidgets FLTK FOX toolkit

Примечания

Ссылки Официальный сайт gtkmm Неофициальный перевод «Programming with gtkmm»

Категория:GTK Категория:Библиотеки C++ Категория:Свободные библиотеки программ Категория:Статьи с примерами кода C++