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 Gtk::Builder. 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.


  • 使用继承来派生定制的组件。
  • 类型安全的信号句柄,而且是标准 C++。
  • 多态。
  • 使用标准 C++ 库,包括字符串、容器和迭代器。
  • 通过 UTF8 完全的支持国际化。
  • 完全的 C++ 内存管理
    • 对象组合(Object composition)
    • 自动释放动态分配的组件。
  • 完全使用了 C++ 的命名空间(namespaces)。
  • 没有宏(MACRO)
  • Cross-platform: Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC 2013 or later (gtkmm3), MSVC 2017 or later (gtkmm4)), MacOS X (gcc), others
  • 自由免费的软件,无论是开发开源软件还是闭源软件,都是免费的。
  • 这是在公开环境下讨论、设计和实现的。

其它 gtkmm 相关的库


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. However, gtkmm is designed to work well with all other C++ libraries.

gnomemm 库涵盖了一部分上述的功能,但是它们不是使用 gtkmm 所必需的。


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


也一定要去看看 Bakery,这是一个构建 gtkmm/gnomemm 应用程序的框架。它可以让用户使用 Document/View 构架。