函数

GObjectsignal_new

声明 [源]

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,
  ...
)

描述 [源]

创建一个新的信号。(这通常在类初始化器中完成。)

信号名称由由ASCII字母和数字组成的段组成,由-_字符分隔。信号名称的第一个字符必须是字母。违反这些规则的名字会导致未定义的行为。这些规则与属性命名规则相同(见 g_param_spec_internal())。

在注册信号和查找信号时,可以使用任一分隔符,但不能混合使用。使用-效率更高。使用_被 discourages。

如果class_offset用于0,子类无法在其 class_init 方法中通过执行 super_class->signal_handler = my_signal_handler 来覆盖类的处理程序。相反,它们将必须使用 g_signal_override_class_handler()。

如果c_marshallerNULL,则将使用g_cclosure_marshal_generic()作为信号的marshaller。在某些简单情况下,g_signal_new()将使用更优化的c_marshaller和va_marshaller来代替该信号的g_cclosure_marshal_generic()

如果c_marshallerNULL,则还需要使用g_signal_set_va_marshaller()指定va_marshaller,否则将使用通用的va_marshaller。

此函数对语言绑定不可直接使用。

参数

signal_name

类型: const gchar*

信号的名称。

数据由该函数的调用者拥有。
值是一个以NUL结尾的UTF-8字符串。
itype

类型: GType

该信号相关的类型。它还将与从该类型派生的类型相关。

signal_flags

类型: GSignalFlags

GSignalFlags的组合,指定默认处理程序的详细信息何时被调用。您至少应指定G_SIGNAL_RUN_FIRSTG_SIGNAL_RUN_LAST

class_offset

类型: guint

此类结构中函数指针的偏移量。用于泛型调用类方法。传递0不将类方法槽与该信号关联。

accumulator

类型: GSignalAccumulator

该信号的累加器;可能是NULL

参数可以是NULL
accu_data

类型: gpointer

累加器的用户数据。

参数可以是NULL
数据由该函数的调用者拥有。
c_marshaller

类型: GSignalCMarshaller

将参数值数组转换为信号发射的函数转换为C语言回调调用的函数,或NULL

参数可以是NULL
return_type

类型: GType

返回值的类型,或对于一个没有返回值的信号使用G_TYPE_NONE

n_params

类型: guint

将要跟随的参数类型的数量。

...

类型: 

类型列表,每一个对应一个参数。

返回值

类型: guint

信号id。