GObject 信号(Signal)主要用于特定事件与响应者之间的连接,它与操作系统级中的信号没有什么关系。
一般在class_init时,由g_signal_new生成一个新信号句柄并绑定回调函数,也可以使用g_signal_connect连接对象和处理方式(回调函数),由g_signal_emit发出信号触发。
guint
g_signal_new (const gchar *signal_name,
GType itype,
GSignalFlags signal_flags,
guint class_offset,
GSignalAccumulator accumulator,
gpointer accu_data,
GSignalCMarshaller c_marshaller,
GType return_type,
guint n_params,
...)
通过上面的函数模型可以看出,其参数个数是可变的。而这些参数有些是必须的,有些可设为NULL,下面可以结合一个基于clutter的实例来解释一下各个参数的含义(SECTION 1和2是从clutter源代码中提取出来的定义示例