QT globale Objekte immer geupdated und neu erzeugt?



  • Hallo,
    ich habe ein Programm mit QT unter c++ geschrieben. Dabei habe ich eine gui-verwaltungsdatei programm.ui und dazu die dateien programm.cpp und programm.h neben der main.cpp.

    Ich brauche zwangsläufig zum verwalten von Objekten in der Datei programm.cpp bzw. programm.h golobale Objekte anderer Klassen. Dort speicher ich vorher kalkulierte Modelldaten der Klassen ab.

    Meine Frage ist etwas spezifischer:

    In der header habe ich beispielsweise die Objekte deklariert mittels

    Objektklasse* objektname;
    

    in der cpp befindet sich

    Programm::Programm(QWidget *parent)
    	: QMainWindow(parent)
    
    {
    ui.setupUi(this);
    }
    

    meine Frage lautet, wenn ich zwischen den Klammern die Objekte mittels
    =new Klassenname();
    initialisiere, wird das nur einmalig gemacht oder geschieht das nach jedem GUI update?
    Schließlich hab ich auch zwischen den Klammern meine signal-slot connects.
    Wie kann ich denn ansonsten die Objekte nur einmalig initialisieren und dann so lassen?



  • Das ist eine ganz allgemeine C++ Frage, die gar nichts mit Qt zu tun hat.
    Zum einen brauchst ganz ganz sicher keine "globalen" Objekte. Hab ich jetzt bei dir aber auch gar nicht gesehen. Dein "new" wird so oft aufgerufen, wie der Konstruktor wo der Code drinsteht aufgerufen wird. Und der Konstruktor deiner Klasse kann von Qt schon mal gar nicht aufgerufen werden, den rufst du selber auf und musst also wissen, wie oft du das machst. Da es sich um ein QMainWindow handelt, geh ich davon aus, dass es keinen Sinn macht, das mehrmals zu erstellen.
    Ich würd die aber dringend raten, richtig C++ zu lernen, bevor du mit Qt anfängst. C++ ist sehr komplex und man muss es richtig beherrschen, um nicht ständig auf die Nase zu fallen. Gleich mit einem Ui Framework wie Qt anzufangen ist ziemlich kontraproduktiv.



  • ...


Anmelden zum Antworten