gtkmm is the official C++ interface for the popular GUI library GTK+. Highlights include typesafe callbacks, and a comprehensive set of widgets that are easily extensible via inheritance. You can create user interfaces either in code or with the Glade User Interface designer, using libglademm. There's extensive documentation, including API reference and a tutorial.

gtkmm is free software distributed under the GNU Library General Public License (LGPL).

gtkmm follows the official GNOME Platform Bindings release schedule. This guarantees API/ABI-stability and new releases on a predictable schedule, delivering C++ API for the underlying GTK+ and GNOME APIs as soon as possible.

Features

  • Use inheritance to derive custom widgets.
  • Type-safe signal handlers, in standard C++.
  • Polymorphism.
  • Use of Standard C++ Library, including strings, containers, and iterators.
  • Full internationalisation with UTF8.
  • Complete C++ memory management
    • Object composition
    • Automatic deallocation of dynamically allocated widgets.
  • Full use of C++ namespaces.
  • No macros.
  • Cross-platform: Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC++ .Net 2003), MacOS X (gcc), others
  • Free software and free of cost for both Open Source and proprietary development.
  • Discussed, designed and implemented in public.

Other gtkmm-related libraries

gnomemm

gtkmm is a GUI toolkit and nothing more, and it strives to be the best C++ GUI toolkit. That mandate does not cover generic C++ data structures, an XML parser, or database access. Even our signal/slots system is part of a separate (libsigc++) library.

The gnomemm libraries cover some of these other tasks, but they are optional.

libsigc++

Also, be sure to check out our companion libraries, glibmm (UTF8 strings, threading, etc) and libsigc++ (signal/slots).

Others

Be sure to check out Bakery, a framework for constructing gtkmm/gnomemm applications. It allows use of the Document/View architecture.