Вопрос
Я пишу окно входа в систему в 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, иначе ваше приложение будет закрыто между закрытием окна входа в систему и открытием главного окна.