Вопрос

Я пишу окно входа в систему в Qt.

Когда пользователь нажимает кнопку ОК, он должен закрыть окно входа в систему , показать " Подключение к серверу ... " Виджет и откройте главное окно , как только метод connecttoserver выполнит свою работу.

Однако виджет появляется только тогда, когда отображается главное окно , и сразу исчезает (он даже не должен закрываться!)

Как мне решить эту проблему?

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();
       }
   }
Это было полезно?

Решение

QWidget объявлен как автоматический в стеке, поэтому он уничтожается при возврате метода. Вместо этого вы хотите объявить это в куче:

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

Другие советы

В дополнение к ответу atomice , убедитесь, что вы установили quitOnLastWindowClosed для вашего приложения в false, иначе ваше приложение будет закрыто между закрытием окна входа в систему и открытием главного окна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top