Frage

Ich schreibe ein Anmeldefenster in Qt.

Wenn der Benutzer klickt auf OK, sollte es die Anmeldefenster schließen, zeigt ein "um Server verbinden ..." Widget und öffnen Sie das Haupt Fenster , wenn die connecttoserver Methode hat ihre Arbeit getan.

Allerdings ist die Widget wird nur angezeigt, wenn die Hauptfenster angezeigt wird, und verschwindet sofort (es sollte nicht einmal in der Nähe!)

Wie löse ich dieses Problem?

void LoginWindow::blah()
   {
   close();

   QWidget widget;
   widget.show();

   //calls to the "connecttoserver method"

   Main *main = new Main(student->getInfo()[0], student->getInfo()[1], student->getInfo()[2], view);
   main->show();
       }
   }
War es hilfreich?

Lösung

QWidget als automatisches auf dem Stapel deklariert, so dass es, wenn die Methode zurückgibt, wird zerstört. Sie wollen es auf dem Heap deklarieren statt:

QWidget *widget = new QWidget();
widget->show();

Andere Tipps

Neben atomice Antwort , stellen Sie sicher, dass Ihre Anwendung quitOnLastWindowClosed auf falsch, oder aber Ihre Anwendung Ihre Login-Fenster und öffnen Sie Ihre Hauptfenster zwischen schließen.

beenden wird
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top