我试图学习如何使用gtk + 3.0来制作GUI。我想将一个简单的参数,一个整数,传递给一个回调函数,这样当我按下按钮时,参数的值就会改变。这里是我的代码:将其他参数传递给gtk函数
#include <gtk/gtk.h>
void buttonFunction(GtkWidget * widget, gpointer data, int & n){
n = 1;
}
int main(int argc, char ** argv){
int n = 0;
GtkWidget * window;
GtkWidget * button;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label("Osss");
gtk_container_add(GTK_CONTAINER(window),button);
gtk_widget_show_all(window);
g_signal_connect(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(buttonFunction), n);
gtk_main();
return 0;
}
我发现传递参数的唯一途径是作为一个指针:
void buttonFunction(GtkWidget * widget, gpointer * data);
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(buttonFunction), &n);
我如何传递多个参数这种方式寿?
你的callbck参数是错误的:应该是'gpointer data'而不是'gpointer * data'。 'gpointer'已经是一个指针了,它是'void *'的一个typedef。 – liberforce