Alternative zu Global



  • Hey Leute,

    ich bin grade dabei etwas zu Proggen und stehe nun vor einem kleinen Problem.

    Leider komme ich nicht dahinter wie ich das Problem ohne Globalen Variablen lösen soll bzw ob man es kann.

    static GtkWidget *
    about_create_window ( GtkWidget *window )
    {
    	GtkBuilder *builder;
    	GError* error = NULL;
    
    	builder = gtk_builder_new ();
    	if (!gtk_builder_add_from_file (builder,UI_ABOUT,&error))
    	    {
    			g_warning ("Couldn't load builder file: %s", error->message);
    			g_error_free (error);
    		}
    
    	gtk_builder_connect_signals (builder, NULL);
    
    	 window = GTK_WIDGET (gtk_builder_get_object (builder, "window_about"));
    	 g_object_unref ( G_OBJECT (builder));
    
    	 return window;
    }
    
    void
    about_show (GtkButton *button, gpointer data)
    {
    	GtkWidget *window;
    
    	window = about_create_window ( window );
    
    	gtk_widget_show (window);
    }
    

    Bis dahin gibt es keine Probleme, aber nun will ich mein erstelltes Widget wieder schließen. Und grade weil ich hier weder structuren noch globale variablen benutze, weiß ich nicht wie ich das Widget mit einer anderen Funktion schließen soll.

    Gibt es ne alternative zu Globalen Variablen oder Structuren die ich hier verwenden kann ?

    mfg akoww

    //edit
    BTW, wieso gibt es eine WinAPI Abteilung aber nichts konkretes wo man über QT, GTK und co labern kann?



  • akoww schrieb:

    BTW, wieso gibt es eine WinAPI Abteilung aber nichts konkretes wo man über QT, GTK und co labern kann?

    Und wofür ist bitte das Unterforum Andere GUIs - Qt, GTK+, wxWidgets?

    akoww schrieb:

    Leider komme ich nicht dahinter wie ich das Problem ohne Globalen Variablen lösen soll bzw ob man es kann.

    Allgemein kann man sagen, das sich globale Variablen immer durch lokale (z.B. In der Funktion die diesen Code aufruft) und einer Parameterübergabe lösen lässt oder über Membervariablen (falls C++, sieht mir aber nach C aus).



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • akoww schrieb:

    grade weil ich hier weder structuren noch globale variablen benutze, weiß ich nicht wie ich das Widget mit einer anderen Funktion schließen soll.

    Es kommt natürlich darauf an, was für eine Funktion das ist. Wenn es ein Event-Handler ist, würde ich das Window durch den data-Parameter übergeben, dazu ist er ja auch da. Andernfalls musst du ihn so als Parameter weiterschieben, wenn das nicht gehen sollte, bist du auf die Strukturen angewiesen (globale Variablen lassen wir mal aussen vor).


Log in to reply