Question

J'écris une fenêtre de connexion en Qt.

Lorsque les utilisateurs cliquent sur OK, il convient de fermer la fenêtre de connexion , d'afficher un " Connexion au serveur ... " Widget et ouvrez la fenêtre principale une fois que la méthode connecttoserver a fait son travail.

Toutefois, le widget n'apparaît que lorsque la fenêtre principale est affichée et disparaît immédiatement (il ne devrait même pas se fermer!)

Comment résoudre ce problème?

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();
       }
   }
Était-ce utile?

La solution

QWidget est déclaré comme automatique sur la pile et est donc détruit au retour de la méthode. Vous souhaitez le déclarer sur le tas à la place:

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

Autres conseils

En plus de la answer d'Atomice, assurez-vous que vous avez défini la propriété quitOnLastWindow de votre application, false, sinon votre application se terminera entre la fermeture de la fenêtre de connexion et l'ouverture de la fenêtre principale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top