Qt: On Created Event



  • Hallo,

    nach dem ich meine GUI erstellt habe(Konstruktor) würde ich gerne noch ein paar Elemente ausrichten. Das Problem ist ja, dass die sizehints im Konstruktor nicht funktionieren. Deshalb suche ich eine Möglichkeit das unmittelbar nach dem Konstruktor durchführen zu können. Gibt es eine Möglichkeit ein onConstructed Signal los zu schicken, wenn der Konstruktor beendet wurde?



  • Ok hat sich denke ich erledigt.



  • Leider doch nciht. Ich habs jetzt über einen Timer gemacht, aber das ist nciht optimal. Denn da wird die GUI eingeblendet, und man sieht noch, wie sich alles verändert. Kann ich das ausrichten via sizehint irgendwie machen, bevor die GUI erscheint?



  • Meine beste Lösung bisher:

    Konstruktor Anfang:

    setupUi(this);
        this->show();
        this->setVisible(false);
    

    Konstruktor Ende:

    this->setVisible(true);
    

    allerdings Flackert so die GUI beim starten. Das muss doch besser gehen. Das Problem ist, das ich erst mit den sizes und sizehints arbeiten kann, wenn das show aufgerufen wurde.



  • show() im Konstruktor ist nicht so dolle... Liegt dein Widget irgendwo in einem Layout (wird also nicht direkt beim Erstellen ausgerichtet) bist du wieder bei 0.
    Lösung: showEvent() für das initiale Ausrichten, um auf Größenänderungen zu reagieren nimmst du dir noch das resizeEvent() vor. In beiden erhältst du die Größe über den Parameter (QShowEvent/QResizeEvent).



  • Kann ich showEvent() einfach reimplementieren, in meiner Klasse, oder muss ich da was beachten?



  • Also ich habe jetzt einmal das showEvent() reimplementiert, und mache da meine Anpassungen. Aber da tritt ja auch das Problem auf. Man sieht, wie sich die Elemente verschieben. Gibt es keine Möglichkeit die Elemente zu verschieben, wenn die GUI noch nicht angezeigt wird? Hier ein Code-Fetzen:

    void GUI::showEvent(QShowEvent *event) {
        //verschieben
        Q_UNUSED(event);
    }
    

Anmelden zum Antworten