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();
}
}
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.