我正在使用exec()打开QDialog / QMessageBox来获取用户输入。但是,在用户从消息框中选择“保存”或“放弃”之前,将关闭打开它的父窗口。
当发生这种情况时,应用程序崩溃了。
关闭父级时,QDialog / QMessageBox是否可以关闭。 ?
QMessageBox msgBox;
msgBox.setParent(parent);
msgBox.setWindowTitle("Save Changes");
msgBox.setWindowModality(Qt::ApplicationModal);
msgBox.setText(QString("XXXX have been added to %1.").arg(YYY));
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard);
msgBox.setDefaultButton(QMessageBox::Save);
msgBox.setIcon(QMessageBox::Question);
int userSelection = msgBox.exec();
switch (userSelection) {
case QMessageBox::Save:
{
onSubmitClicked();
reload();
}
break;
case QMessageBox::Discard:
{
sList.clear();
reload();
}
break;
default:
break;
}
关闭窗口代码:
if (window != nullptr && window->isVisible())
{
window->close();
}