函数
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-
类型:
GSignalFlagsGSignalFlags的组合,指定默认处理程序的详细信息何时被调用。您至少应指定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将要跟随的参数类型的数量。
...-
类型:
类型列表,每一个对应一个参数。