信号

GObject Object ::notify

声明

void
notify (
  GObject* self,
  GObject.ParamSpec* pspec,
  gpointer user_data
)

描述 [源]

当使用 g_object_set_property(), g_object_set() 等方式设置对象的属性值时,会触发 notify 信号。

注意,接收到该信号并不代表属性值一定发生了改变。是否触发该信号由派生的 GObject 类决定。如果实现者没有使用 G_PARAM_EXPLICIT_NOTIFY 创建属性,那么任何对 g_object_set_property() 的调用都会导致 ::notify 信号被触发,即使新值与旧值相同。如果使用了 G_PARAM_EXPLICIT_NOTIFY,则只有在明确调用 g_object_notify() 或 g_object_notify_by_pspec() 时,该信号才会被触发,而且通常只有在值实际发生改变时才会这样做。

该信号通常用于通过在 g_signal_connect() 调用中指定属性名作为细节,来获取单个属性的改变通知,例如:

g_signal_connect (text_view->buffer, "notify::paste-target-list",
                  G_CALLBACK (gtk_text_view_target_list_notify),
                  text_view)

重要的是要注意,你必须使用 规范参数名 作为 notify 信号的细节字符串。

默认处理程序

默认处理程序会在通过 g_signal_connect() 添加的处理程序之前被调用。

信号发射将重新启动而不是 递归
用户代码可以直接在对象上 直接发射 信号
信号可以是 详细的
对于该信号,钩子 是禁用的

参数

pspec

类型: GParamSpec

已更改属性的 GParamSpec

数据由函数的调用者拥有。