Отправка данных в обратном вызове GTK - PullRequest
1 голос
/ 26 мая 2010

Как я могу отправить данные через обратный вызов GTK? Я гуглил, и с информацией, которую я нашел, создал это:

#include <gtk/gtk.h>
#include <stdio.h>
void button_clicked( GtkWidget *widget, GdkEvent *event, gchar *data);

int main( int argc, char *argv[]){
    GtkWidget *window;

    GtkWidget *button;

    gtk_init (&argc, &argv);


    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    button = gtk_button_new_with_label("Go!");


    gtk_container_add(GTK_CONTAINER(window), button);

    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_clicked),"test" );

    gtk_widget_show(window);
    gtk_widget_show(button);

    gtk_main();
    return 0;
}

void button_clicked( GtkWidget *widget, GdkEvent *event, gchar *data){
    printf("%s \n", (gchar *) data);
    return;
}

Но это просто Segfaults, когда я нажимаю кнопку. Как правильно это сделать?

1 Ответ

5 голосов
/ 26 мая 2010

Это происходит с ошибками, потому что "clicked" не имеет параметра GdkEvent. Если вы удалите второй аргумент в button_clicked(), он должен работать.

Установите приложение Devhelp, откуда вы можете легко просматривать документацию GTK + и GNOME, включая определения сигналов.

...