函数
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_marshaller
是NULL
,则将使用g_cclosure_marshal_generic()
作为信号的marshaller。在某些简单情况下,g_signal_new()
将使用更优化的c_marshaller和va_marshaller来代替该信号的g_cclosure_marshal_generic()
。
如果c_marshaller
非NULL
,则还需要使用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_FIRST
或G_SIGNAL_RUN_LAST
。 class_offset
-
类型:
guint
此类结构中函数指针的偏移量。用于泛型调用类方法。传递0不将类方法槽与该信号关联。
accumulator
-
该信号的累加器;可能是
NULL
。参数可以是 NULL
。 accu_data
-
类型:
gpointer
累加器的用户数据。
参数可以是 NULL
。数据由该函数的调用者拥有。 c_marshaller
-
将参数值数组转换为信号发射的函数转换为C语言回调调用的函数,或
NULL
。参数可以是 NULL
。 return_type
-
类型:
GType
返回值的类型,或对于一个没有返回值的信号使用
G_TYPE_NONE
。 n_params
-
类型:
guint
将要跟随的参数类型的数量。
...
-
类型:
类型列表,每一个对应一个参数。