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();
       }
   }
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top