Если я правильно понял вопрос, вы хотите, чтобы открылось одно диалоговое окно, и хотите удалить его до того, как поступит новый запрос?
Если это так, вы можете сделать следующее:
В MainWindow.h
объявить QDialog *dlg = nullptr
В вашей функции MainWindow.cpp newAction()
вы можете выполнять следующие действия:
void newAction()
{
if(dlg != nullptr)
{
dlg->close();
dlg->deleteLater();
//or
//dlg->destroy(); // this will immediately free memory
}
dlg = new QDialog(centralWidget());
...
//dlg->exec(); // This will automatically make QDialog modal.
dlg->show(); // This will not make a QDialog modal.
}
Надеюсь, это поможет. Помните, QDialogs при отображении с exec()
они автоматически ведут себя как модальное окно. show()
сделает его немодальным.