【问题标题】:Is it possible to define GTK+ type using gtkmm?是否可以使用 gtkmm 定义 GTK+ 类型?
【发布时间】:2012-05-30 11:25:01
【问题描述】:

我想定义一些 gtkmm 类型的新子类,实现底层 GTK+ 对象的接口。然后,我想将它编译成某种 dll 并通过这个接口在纯 C 代码(GTK+,没有 gtkmm)中使用。有可能吗?

【问题讨论】:

  • 结果必然是一个 C++ 类。无法从 C 中使用 C++ 类,但您当然可以围绕它编写 C 包装器。不过会有点迂回,不是吗?如果你想在 C 中使用它,为什么不直接用 C 编写呢?
  • 因为 GTK+ 风格的继承会导致代码臃肿。此外,我想在新定义的类中使用 C++ 对象。
  • 从技术上讲,无需编写任何额外的包装器就可以实现 - 我们只需要告诉 GTK+ 魔法层对象有多大,并告诉一些如何调用构造函数。问题是 - 如何以非 hacky 的方式来做(如果存在的话)。
  • “因为 GTK+ 风格的继承导致代码臃肿。”继承本质上是复杂的。所有这些“膨胀”也在 C++ 中发生,只是在引擎盖下。
  • 当然可以,但是代码仍然更清晰。就我而言,开销不是问题。

标签: c++ gtk glib gtkmm


【解决方案1】:

GTK+中使用gtkmm小部件需要满足以下条件:

  1. gtkmm 中实现所需的自定义小部件
  2. Glade 的小部件创建一个库
  3. 使用 Glade 设计包含自定义小部件的用户界面
  4. GTK+编写的应用程序声明C接口
  5. 使用 GtkBuilder 从 XML 构建用户界面

详情可以在我的blog post找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2021-07-25
    • 2020-08-24
    相关资源
    最近更新 更多