类
GObjectSignalGroup
自 2.72 版本起
描述 [源代码]
final class GObject.SignalGroup : GObject.Object
{
/* No available fields */
}
GSignalGroup
管理了 GObject
上的多个信号。
GSignalGroup
简化了将多个信号连接到 GObject
作为一组的过程。因此,没有 API 可以从该组断开信号。
特别是,这允许您
- 更改目标实例,这将自动断开与旧实例的信号连接并连接到新实例。
- 以一组形式阻塞和解除阻塞信号
- 确保阻塞状态在不同目标实例之间传递。
您可能希望使用这种结构的地方之一是与 GtkTextView
和 GtkTextBuffer
一起使用。通常情况下,您需要从 GtkTextView
子类连接到许多 GtkTextBuffer
信号。这允许您在实例构建期间创建信号组,简单地将 GtkTextView:buffer
属性绑定到 GSignalGroup:target
,并将所有所需的信号连接在一起。当 GtkTextView:buffer
属性更改时,所有信号都将正确转换。
自 2.72 版本起可用
实例方法
g_signal_group_set_target
设置连接信号时使用的目标实例。任何使用 g_signal_group_connect_object()
或类似函数注册的信号都将连接到此对象。
自 2.72 版本起
g_signal_group_unblock
解锁由 self
管理的所有信号处理程序,以便在信号发出时重新调用。除非再次被阻止,否则它们将在信号发出的任何情况下重新调用。必须以与被阻止相同的次数解锁才能再次激活。
自 2.72 版本起
信号
GObject.SignalGroup::bind
当 GSignalGroup:target
设置为新值(非 NULL
)时发出此信号。这与在 target
上调用 GObject::notify
类似,但不会在 GSignalGroup:target
为 NULL
时发出,并且还允许在没有数据竞争的情况下接收 GObject
。
自 2.72 版本起