我試圖學習如何使用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