0

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

0 回答 0