简单的例子

在开始介绍 gtkmm 之前,我们将以一个尽可能简单的程序开始。这个程序创建一个 200 x 200 像素大小的空窗口。

源代码

File: base.cc (For use with gtkmm 4)

#include <gtkmm.h>

class MyWindow : public Gtk::Window
{
public:
  MyWindow();
};

MyWindow::MyWindow()
{
  set_title("Basic application");
  set_default_size(200, 200);
}

int main(int argc, char* argv[])
{
  auto app = Gtk::Application::create("org.gtkmm.examples.base");

  return app->make_window_and_run<MyWindow>(argc, argv);
}

我们会逐行讲解这个例子

#include <gtkmm.h>

所有的 gtkmm 程序都需要包含一些特定的 gtkmm 头文件;gtkmm.h 包含了所有 gtkmm 的内容。通常来说,这并不是一个好主意,因为它包括了一兆左右的头文件。当然,对于这个简单的程序,这就够了。

下一条语句:

auto app = Gtk::Application::create("org.gtkmm.examples.base");
创建一个Gtk::Application对象,将其储存在一个Glib::RefPtr智能指针中。所有的gtkmm应用都需要如此做。该对象的create()方法将初始化gtkmm

接下来的两行代码创建一个窗口并设置其的初始大小:

Gtk::Window window;
window.set_default_size(200, 200);

最后一行显示窗口并进入gtkmm主循环,当窗口被关闭。你的main()函数将会返回成功或者适当的错误码。

return app->run(window, argc, argv);

将源代码保存到 simple.cc 后,你可以使用 gcc 编译上面的程序:

g++ simple.cc -o simple `pkg-config gtkmm-4.0 --cflags --libs`
注意,你必须将 pkg-config 的调用包含在一对反单引号中。反单引号会导致其内的命令由 shell 执行,并且将命令的输出做为该命令行的一部分来使用。另外请注意,在命令行中simple.cc必须位于pkg-config调用之前。