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++