gtkmm (formerly known as gtk-- or gtk minus minus[1]) is the official C++ interface for the popular GUI library GTK. gtkmm is free software distributed under the GNU Lesser General Public License (LGPL).

Repository
Written inC++
PlatformGTK
TypeLanguage binding
LicenseGNU Lesser General Public License
Websitewww.gtkmm.org

gtkmm allows the creation of user interfaces either in code or with the Glade Interface Designer, using the Gtk::Builder class. Other features include typesafe callbacks, a comprehensive set of graphical control elements, and the extensibility of widgets via inheritance.

Features

edit

Because gtkmm is the official C++ interface of the GUI library GTK, C++ programmers can use the common OOP techniques such as inheritance, and C++-specific facilities such as STL (In fact, many of the gtkmm interfaces, especially those for widget containers, are designed to be similar to the Standard Template Library (STL)).

Main features of gtkmm are listed as follows:

Hello World in gtkmm

edit
//HelloWorldWindow.h

#ifndef HELLOWORLDWINDOW_H
#define HELLOWORLDWINDOW_H

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

// Derive a new window widget from an existing one.
// This window will only contain a button labelled "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 the title of the window.
    set_title("Hello World");

    // Add the member button to the window,
    add(hello_world);

    // Handle the 'click' event.
    hello_world.signal_clicked().connect([] () {
          std::cout << "Hello world" << std::endl;
    });
    // Display all the child widgets of the window.
    show_all_children();
}
//main.cc

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

int main(int argc, char *argv[]) 
{
    // Initialization
    Gtk::Main kit(argc, argv);

    // Create a hello world window object
    HelloWorldWindow example;

    // gtkmm main loop
    Gtk::Main::run(example);
    return 0;
}

The above program will create a window with a button labeled "Hello World". The button sends "Hello world" to standard output when clicked.

The program is run using the following commands:

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

This is usually done using a simple makefile.

Applications

edit

Some notable applications that use gtkmm include:

See also

edit

References

edit
  1. ^ The gtkmm FAQ
  2. ^ "Debian -- Details of package amsynth in jessie". Retrieved 2017-03-06.
  3. ^ "Debian -- Details of package cadabra in jessie". Retrieved 2017-03-06.
  4. ^ "Debian -- Details of package gnome-system-monitor in jessie". Retrieved 2017-03-06.
  5. ^ "Debian -- Details of package gigedit in jessie". Retrieved 2017-03-06.
  6. ^ "Debian -- Details of package pavucontrol in jessie". Retrieved 2017-03-06.
  7. ^ "Debian -- Details of package paman in jessie". Retrieved 2017-03-06.
  8. ^ "Debian -- Details of package paprefs in jessie". Retrieved 2017-03-06.
  9. ^ "Debian -- Details of package pavumeter in jessie". Retrieved 2017-03-06.
  10. ^ "Debian -- Details of package rawtherapee in jessie". Retrieved 2017-03-06.
  11. ^ "Debian -- Details of package seq24 in jessie". Retrieved 2017-03-06.
  12. ^ "Debian -- Details of package synfigstudio in jessie". Retrieved 2017-03-06.
  13. ^ "Debian -- Details of package linthesia in jessie". Retrieved 2017-03-06.
  14. ^ "Debian -- Details of package mysql-workbench in jessie". Retrieved 2017-03-06.
  15. ^ "Debian -- Details of package visualboyadvance-gtk in jessie". Retrieved 2017-03-06.
edit