无法在 gtk2 的销毁信号中传递数据
Cannot pass data in destroy signal of gtk2
这是代码,我想将my_pointer
传递给gtk的destroy
信号window GtkWidget *window
:
static gboolean destroy(GtkWidget *widget, GdkEvent *event, gpointer data) {
printf("gpointer: %ld\n", data);
}
g_signal_connect (window, "destroy", G_CALLBACK(destroy), my_pointer);
但是我得到的是1
,总是1
!
当我将 my_pointer
传递给它时,任何其他信号都可以正常工作,例如 focus-in-event
、key-press-event
等,但是 destroy
信号有什么问题? 1
根本不是指针。
destroy
signal 不同于 destroy-event
信号。
destroy
信号回调的预期函数原型如下:
void
user_function (GtkWidget *object,
gpointer user_data)
而您的函数当前匹配 destroy-event
信号的回调:
gboolean
user_function (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
更改 return 类型并删除函数的第二个参数。
static void destroy(GtkWidget *widget, gpointer data) {
printf("gpointer: %ld\n", data);
}
这是代码,我想将my_pointer
传递给gtk的destroy
信号window GtkWidget *window
:
static gboolean destroy(GtkWidget *widget, GdkEvent *event, gpointer data) {
printf("gpointer: %ld\n", data);
}
g_signal_connect (window, "destroy", G_CALLBACK(destroy), my_pointer);
但是我得到的是1
,总是1
!
当我将 my_pointer
传递给它时,任何其他信号都可以正常工作,例如 focus-in-event
、key-press-event
等,但是 destroy
信号有什么问题? 1
根本不是指针。
destroy
signal 不同于 destroy-event
信号。
destroy
信号回调的预期函数原型如下:
void
user_function (GtkWidget *object,
gpointer user_data)
而您的函数当前匹配 destroy-event
信号的回调:
gboolean
user_function (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
更改 return 类型并删除函数的第二个参数。
static void destroy(GtkWidget *widget, gpointer data) {
printf("gpointer: %ld\n", data);
}