QT关闭QDialogs / QMessageBox在父窗口关闭时从调用exec()打开

时间:2017-09-28 10:19:00

标签: qt c++11 qdialog qmessagebox qeventloop

我正在使用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();
        }

0 个答案:

没有答案