Domanda

Sto scrivendo una finestra di accesso in Qt.

Quando gli utenti fanno clic su OK, devono chiudere la finestra di accesso , mostrare un " Connessione al server ... " Widget e apri la finestra principale dopo che il metodo connecttoserver ha fatto il suo lavoro.

Tuttavia, il widget appare solo quando viene visualizzata la finestra principale e scompare immediatamente (non dovrebbe nemmeno chiudersi!)

Come posso risolvere questo problema?

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();
       }
   }
È stato utile?

Soluzione

QWidget viene dichiarato come automatico nello stack, quindi viene distrutto quando il metodo ritorna. Invece, devi dichiararlo sull'heap:

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

Altri suggerimenti

Oltre alla risposta di atomice , assicurati di aver impostato quitOnLastWindow dell'applicazione falso, altrimenti l'applicazione terminerà tra la chiusura della finestra di accesso e l'apertura della finestra principale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top