功能

GObjectsignal_has_handler_pending

声明 [源代码]

gboolean
g_signal_has_handler_pending (
  GObject* instance,
  guint signal_id,
  GQuark detail,
  gboolean may_be_blocked
)

说明 [源代码]

返回是否有任何处理程序与给定信号 ID 及详细信息相连的 instance

如果 detail 为 0,则它仅匹配那些在未带有详细信息的情况下连接的处理程序。如果 detail 为非 0,则它将匹配在未带有详细信息并带有给定详细信息的情况下连接的处理程序。这与带有 detail 的信号如何传递到这些处理程序一致。

自 2.46 以来,它还检查是否安装了非默认类闭包,因为这基本上总是您希望的。

您可能希望使用它的一种情况是当信号的参数难以计算时。如果无论如何没有连接任何内容,类实现程序可以选择不发出信号,从而节省构建参数的成本。

参数

instance

类型: GObject

需要信号处理程序的对象。

此数据归函数的调用方所有。
signal_id

类型: guint

信号 ID。

detail

类型: GQuark

详细信息。

may_be_blocked

类型: gboolean

是否应将被阻止的处理程序计为匹配项。

返回值

类型: gboolean

如果处理程序连接到此信号,则为 TRUE,否则为 FALSE