获得点击价值

Get value on click

我需要在单击文本时获取一个值,但似乎由于某种原因,指针丢失并且returns一个随机值,我想这样做:

static void click(GtkWidget* widget, long* click){
 cout << "Long value is: " << *click << endl;
}

int main(){
   gtk_init(0,0);
   //......... MORE CODE ......
   GtkWidget* label  = gtk_image_menu_item_new_with_label(text);
   long value = 50509;
   g_signal_connect(label, "button_press_event", G_CALLBACK(click), &value);
   //......... MORE CODE ......
   gtk_main();
}

(C++ 14) 有人可以帮我吗?

我发现了错误,很简单,当我在函数中传递一个值时,g_signal_connect,它变成了一个gpointer,一个指针支持32bits的数据,而long消耗64bits,我将 long 更改为 int 并且它工作得很好!。 解决方案:

static void click(GtkWidget *widget,GdkEvent  *event, gpointer  data){
 cout << "Int value is: " << GPOINTER_TO_INT(data) << endl;
}

int main(){
   gtk_init(0,0);
   //......... MORE CODE ......
   GtkWidget* label  = gtk_image_menu_item_new_with_label(text);
   int value = 50509;
   g_signal_connect(label, "button_press_event", G_CALLBACK(click), GINT_TO_POINTER(value));
   //......... MORE CODE ......
   gtk_main();
}

感谢@gerhardh 的评论。