接口

GtkBuildable

描述 [源代码]

interface Gtk.Buildable : GObject.Object

GtkBuildable 允许对象扩展和自定义它们从 ui 文件中的反序列化。

该接口包括用于设置对象名称和属性、解析自定义标签和构造子对象的方法。

GtkBuildable 接口由所有构件小工具和许多 GTK 提供的非构件小工具对象实现。此接口的主要用户是 GtkBuilder。应用程序几乎不需要直接调用其中任何函数。

只有当一个对象需要扩展 GtkBuilder XML 格式或在反序列化时运行任何额外例程时,它才需要实现此接口。

先决条件

要实现 Buildable,你的类型必须继承自GObject

实现

实例方法

gtk_buildable_get_buildable_id

获取 buildable 对象的 ID

接口结构

struct GtkBuildableIface {
  GTypeInterface g_iface;
  void (* set_id) (
    GtkBuildable* buildable,
    const char* id
  );
  const char* (* get_id) (
    GtkBuildable* buildable
  );
  void (* add_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* type
  );
  void (* set_buildable_property) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* name,
    const GValue* value
  );
  GObject* (* construct_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* name
  );
  gboolean (* custom_tag_start) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    GtkBuildableParser* parser,
    gpointer* data
  );
  void (* custom_tag_end) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    gpointer data
  );
  void (* custom_finished) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    gpointer data
  );
  void (* parser_finished) (
    GtkBuildable* buildable,
    GtkBuilder* builder
  );
  GObject* (* get_internal_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* childname
  );
  
}

GtkBuildableIface 接口包含必要的用于允许 GtkBuilderGtkBuilder UI 定义构造一个对象的方法。

接口成员
g_iface
GTypeInterface
 

父类。

set_id
void (* set_id) (
    GtkBuildable* buildable,
    const char* id
  )
 

存储在 GtkBuilder UI 定义中给出的 id 属性。GtkWidget 以对象数据存储名称。如果你的对象有一些关于“ID”的概念,并且将 XML id 属性映射到它是有意义的,实现此方法。

get_id
const char* (* get_id) (
    GtkBuildable* buildable
  )
 

对应于 set_id 的方法。如果你实现了 set_id,实现此方法。

add_child
void (* add_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* type
  )
 

添加子对象。type 参数可用于区分子对象类型。GtkWidget 实现此方法向窗口小部件添加事件控制器,GtkNotebook 使用 type 来区分页面标签(类型为“page-label”)和常规子对象。

set_buildable_property
void (* set_buildable_property) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* name,
    const GValue* value
  )
 

设置一个可构建对象的属性。通常不需要实现此方法,默认使用 g_object_set_property()GtkWindow 实现此方法以延迟显示其本身(即设置 GtkWidget:visible 属性),直到创建整个界面。

construct_child
GObject* (* construct_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* name
  )
 

构造一个子构建元素,该元素已在 UI 定义中指定为“构造函数”。可用于引用在 <ui> 标签中创建的小部件,该标签位于常规 GtkBuilder UI 定义层次之外。构造的对象引用返回并归调用方所有。

custom_tag_start
gboolean (* custom_tag_start) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    GtkBuildableParser* parser,
    gpointer* data
  )
 

如果构建元素需要解析 <child> 下面的内容,实现此方法。为了处理一个元素,实现必须填写 parseruser_data 并返回 TRUEGtkWidget 会实现此方法来解析在 <accessibility> 元素中指定的可访问属性。请注意,必须在 custom_tag_endcustom_finished 中释放 user_data

custom_tag_end
void (* custom_tag_end) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    gpointer data
  )
 

对构建元素处理的每个自定义元素的结束标签调用(参见 custom_tag_start)。

custom_finished
void (* custom_finished) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    gpointer data
  )
 

当构建器完成解析 UI 定义时,对构建元素处理的每个自定义标签调用(参见 custom_tag_start)。

parser_finished
void (* parser_finished) (
    GtkBuildable* buildable,
    GtkBuilder* builder
  )
 

当构建器完成解析 UI 定义时调用。通常不需要实现此方法,除非你需要执行特殊的清理操作。GtkWindow 设置 GtkWidget:visible 属性。

get_internal_child
GObject* (* get_internal_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* childname
  )
 

返回可构建项目的内部子项。GtkDialog 实现此项以允许访问其 vbox,从而可以在 UI 定义中向 vbox 中添加子项。如果可构建项目存在可能需要从 UI 定义中访问的内部子项,请实现此项。

虚拟方法

Gtk.Buildable.add_child

buildable 中添加子项。type 是一个可选的字符串,描述如何添加子项。

Gtk.Buildable.construct_child

构造一个子构建元素,该元素已在 UI 定义中指定为“构造函数”。可用于引用在 <ui> 标签中创建的小部件,该标签位于常规 GtkBuilder UI 定义层次之外。构造的对象引用返回并归调用方所有。

Gtk.Buildable.custom_finished

gtk_buildable_parser_finished() 类似,但会对 buildable 处理的每个自定义标签调用一次。

Gtk.Buildable.custom_tag_end

在可构建项目处理的每个自定义元素的末尾调用。

Gtk.Buildable.custom_tag_start

针对 <child> 下的每个未知元素调用。

Gtk.Buildable.get_id

对应于 set_id 的方法。如果你实现了 set_id,实现此方法。

Gtk.Buildable.get_internal_child

检索 buildable 对象所调用的内部子项目 childname

Gtk.Buildable.parser_finished

当构建器完成解析 UI 定义时调用。通常不需要实现此方法,除非你需要执行特殊的清理操作。GtkWindow 设置 GtkWidget:visible 属性。

Gtk.Buildable.set_buildable_property

设置可构建项目对象的属性。通常不需要实现此项,默认情况下使用 g_object_set_property()GtkWindow 实现此项以推迟显示自身(即设置 GtkWidget:visible 属性),直到创建整个界面。

Gtk.Buildable.set_id

存储在 GtkBuilder UI 定义中给出的 id 属性。GtkWidget 以对象数据存储名称。如果你的对象有一些关于“ID”的概念,并且将 XML id 属性映射到它是有意义的,实现此方法。