| 저장소 | |
|---|---|
| 프로그래밍 언어 | C++ |
| 플랫폼 | GTK |
| 종류 | 언어 바인딩 |
| 라이선스 | GNU 약소 일반 공중 사용 허가서 |
| 웹사이트 | gtkmm |
gtkmm(이전 명칭 gtk-- 또는 gtk minus minus)은 인기 있는 GUI 라이브러리인 GTK를 위한 공식 C++ 인터페이스다. gtkmm은 GNU 약소 일반 공중 사용 허가서(LGPL)에 따라 배포되는 자유 소프트웨어다.
gtkmm을 사용하면 코드 내에서 직접 또는 글레이드 인터페이스 디자이너를 활용하여 Gtk::Builder 클래스로 사용자 인터페이스를 생성할 수 있다. 다른 기능으로는 형식 안전(typesafe) 콜백, 포괄적인 그래픽 컨트롤 요소 세트, 상속을 통한 위젯 확장성 등이 있다.
gtkmm은 GUI 라이브러리인 GTK의 공식 C++ 인터페이스이므로, C++ 프로그래머는 OOP 기법인 상속과 같은 일반적인 기술과 STL과 같은 C++ 고유의 기능을 사용할 수 있다 (실제로 위젯 컨테이너를 위한 많은 gtkmm 인터페이스는 표준 템플릿 라이브러리(STL)와 유사하게 설계되었다).
gtkmm의 주요 특징은 다음과 같다:
//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");
// 멤버 버튼을 창에 추가.
set_child(hello_world);
// 'clicked' 시그널 처리.
hello_world.signal_clicked().connect([] () {
std::cout << "Hello world" << std::endl;
});
}
//main.cc
#include <gtkmm/application.h>
#include "HelloWorldWindow.h"
int main(int argc, char *argv[])
{
// 애플리케이션 객체 생성.
auto app = Gtk::Application::create("org.gtkmm.example");
// hello world 창 객체를 생성하고 닫힐 때 반환함.
return app->make_window_and_run<HelloWorldWindow>(argc, argv);
}
위 프로그램은 "Hello World"라는 라벨이 붙은 버튼이 있는 창을 생성한다. 버튼을 클릭하면 표준 출력으로 "Hello world"를 보낸다.
프로그램은 다음 명령어를 사용하여 실행된다:
$ g++ -std=c++17 *.cc -o example `pkg-config gtkmm-4.0 --cflags --libs`
$ ./example
이 작업은 보통 간단한 메이크파일을 사용하여 수행된다.
gtkmm을 사용하는 주요 응용 프로그램은 다음과 같다: