GTK - Widget an Callback in Data-Argument uebergeben



  • Hallo,

    das ganze schaut in etwa so aus:

    static gboolean callback ( GtkWidget *widget , GdkEvent *event , GtkWidget *window ) {
        /*here i wanna save my entry fields*/
    
        gtk_widget_destroy ( GTK_WINDOW ( window );}
    
    GtkWidget *setup_window () {
        /*making gui*/
    
        window = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
        button_ok = gtk_button_new_with_label ( "OK" );
        g_signal_connect_swapped ( G_OBJECT ( button_ok ) , "clicked" , G_CALLBACK ( callback ) , GTK_WINDOW ( window ) );
    
        /*container aso.*/ }
    

    Also das Problem hier ist ich weiss nicht wie den Zeiger window (4. Argument von g_signal_connect_swapped) an die funktion callback zu uebergeben.

    Bekomme immer einen Speicherzugriffsfehler.

    Solve me please!



  • Ist zwar früh am Morgen, aber funktioniert das so?

    static gboolean callback ( GtkWidget *widget , GdkEvent *event , gpointer data ) {
        GtkWidget *window;
        window = (GtkWidget *)data;
    
        /*here i wanna save my entry fields*/
    
        gtk_widget_destroy ( GTK_WINDOW ( window );}
    
    GtkWidget *setup_window () {
        /*making gui*/
    
        window = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
        button_ok = gtk_button_new_with_label ( "OK" );
        g_signal_connect_swapped ( G_OBJECT ( button_ok ) , "clicked" , G_CALLBACK ( callback ) , window );
    
        /*container aso.*/
    }
    


  • Oder versuchs doch einfach mal nur mit:

    g_signal_connect(G_OBJECT ( button_ok ) , "clicked" , G_CALLBACK ( callback ) , window )
    

Anmelden zum Antworten