GTK 和 C++

关于

gtkmm 是 GTK 的官方 C++ 接口。亮点包括类型安全的 回调,以及一组可通过继承轻松扩展的综合部件。 你可以使用 Gtk::Builder 在代码中创建用户界面。 这里有大量的文档,包括 API 参考和教程。

gtkmm 是根据 GNU 库通用公共许可证 (LGPL) 分发的免费软件。

发布

gtkmm 遵循官方的 GNOME 平台绑定发布时间表。 这保证了 API/ABI 稳定性,并以可预测的时间表发布新版本,从而尽快为底层 GTK 和 GNOME API 提供 C++ API。

文档

在 gtkmm 网站上提供了关于一起使用 GTK 和 C++ 的官方 gtkmm API 文档

一个你好世界应用程序

// File: helloworld.h

#ifndef GTKMM_EXAMPLE_HELLOWORLD_H
#define GTKMM_EXAMPLE_HELLOWORLD_H

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

class HelloWorld : public Gtk::Window
{

public:
  HelloWorld();
  ~HelloWorld() override;

protected:
  //Signal handlers:
  void on_button_clicked();

  //Member widgets:
  Gtk::Button m_button;
};

#endif
// File: helloworld.cc

#include "helloworld.h"
#include <iostream>

HelloWorld::HelloWorld()
: m_button("Hello World")   // creates a new button with label "Hello World".
{
  // Sets the margin around the button.
  m_button.set_margin(10);

  // When the button receives the "clicked" signal, it will call the
  // on_button_clicked() method defined below.
  m_button.signal_clicked().connect(sigc::mem_fun(*this,
              &HelloWorld::on_button_clicked));

  // This packs the button into the Window (a container).
  set_child(m_button);
}

HelloWorld::~HelloWorld()
{
}

void HelloWorld::on_button_clicked()
{
  std::cout << "Hello World" << std::endl;
}
// File: main.cc

#include "helloworld.h"
#include <gtkmm/application.h>

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

  //Shows the window and returns when it is closed.
  return app->make_window_and_run<HelloWorld>(argc, argv);
}

输出

编译并运行上述代码后,您应该看到以下给出的输出

gtkmm output for a hello world application

解释

此代码说明了如何使用 GTK C++ 绑定来创建一个简单的 Hello World 应用程序。 有关上述代码的更详细说明,请查看此处

教程

您可以从这个 来源找到有关 gtkmm 的各种有用教程。

贡献

如果您有兴趣为 gtkmm 绑定项目做出贡献,您可以阅读有关如何开始为 gtkmm 做出贡献的说明,此处

如果您想联系原始源文件,您可以访问该项目在 Gitlab 上的 git 存储库

查看更多

发现拼写错误或缺少一些信息,编辑此页面
阅读如何为本网站做出贡献