Pregunta
Estoy escribiendo una ventana de inicio de sesión en Qt.
Cuando los usuarios hagan clic en Aceptar, debería cerrar la ventana de inicio de sesión , mostrar un " Conectando al servidor ... " Widget y abra la ventana principal una vez que el método connecttoserver haya hecho su trabajo.
Sin embargo, el widget aparece solo cuando se muestra la ventana principal y desaparece inmediatamente (¡ni siquiera debería cerrarse!)
¿Cómo resuelvo este 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();
}
}
Solución
QWidget se declara como automático en la pila por lo que se destruye cuando el método vuelve. Desea declararlo en el montón en su lugar:
QWidget *widget = new QWidget();
widget->show();
Otros consejos
Además de la respuesta de atomice, asegúrate de que la aplicación se haya cerrado en quitOnLastWindow de tu aplicación. falso, o de lo contrario su aplicación terminará entre cerrar la ventana de inicio de sesión y abrir la ventana principal.