获得点击价值
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 的评论。
我需要在单击文本时获取一个值,但似乎由于某种原因,指针丢失并且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 的评论。