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:
- Использование наследования для создания новых виджетов.
- Слоты и сигналы с проверкой типов во время компиляции.
- Полиморфизм.
- Использование стандартной библиотеки 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-файла.
См. также
Примечания
- ↑ Tag 4.14.0
Ссылки
- Официальный сайт gtkmm
- Неофициальный перевод «Programming with gtkmm»