- 論壇徽章:
- 0
|
比如我要對一個窗口添加一個信號,然后在其他回調(diào)函數(shù)中觸發(fā)它。
主函數(shù)中:
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_new ("signal_error", G_TYPE_FROM_CLASS (G_OBJECT (window)),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, 0, NULL, NULL,
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0
);
g_signal_connect (G_OBJECT (window), "signal_error", G_CALLBACK (show_error), NULL); |
回調(diào)函數(shù)中:
g_signal_emit_by_name (G_OBJECT (window), "signal_error", NULL); |
其中window是全局的。
可是運(yùn)行到信號觸發(fā)時沒有觸發(fā),卻出現(xiàn)警告和斷言:
GLib-GObject-CRITICAL **: g_signal_newv: assertion `G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype)' failed
GLib-GObject-WARNING **: gsignal.c:2267: signal `signal_error' is invalid for instance `0x18c0000'
GLib-GObject-WARNING **: invalid (NULL) pointer instance
GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
GLib-GObject-WARNING **: invalid (NULL) pointer instance
GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed |
網(wǎng)上查到的都是過時的代碼,或者是自建的widget類型,怎樣往已存在的widget中添加信號呢? |
|