C++ Qt中关闭事件时程序崩溃

C++ Qt中关闭事件时程序崩溃,c++,qt,C++,Qt,我试图将关闭事件设置为我的代码,但当我设置此代码时,我的程序崩溃 mainwindow.cpp void MainWindow::closeEvent(QCloseEvent *event) { event->ignore(); if (QMessageBox::Yes == QMessageBox::question(this, "Close Confirmation?",

我试图将关闭事件设置为我的代码,但当我设置此代码时,我的程序崩溃

mainwindow.cpp

 void MainWindow::closeEvent(QCloseEvent *event)
    {
        event->ignore();

        if (QMessageBox::Yes == QMessageBox::question(this, "Close Confirmation?",
                                                      "Are you sure you want to exit?",
                                                      QMessageBox::Yes|QMessageBox::No))
        {
            if(QMessageBox::Yes)
            {
                if(aboutDialog)
                {
                    aboutDialog->close();
                    event->accept();
                }
                event->accept();
            }
        }
    }

void MainWindow::showAboutDialog()
{
    aboutDialog = new QDialog;
    Ui::About aboutUi;
    aboutUi.setupUi(aboutDialog);
    connect(aboutUi.Close, SIGNAL(pressed()), aboutDialog, SLOT(close()));
    aboutDialog->show();
}
主窗口

private:
QDialog *aboutDialog;

我不明白为什么会这样。帮我解决这个问题

不要忽略事件如果您计划关闭,请尝试以下操作:

void MainWindow::closeEvent(QCloseEvent *event)
{
    if (QMessageBox::Yes != QMessageBox::question(this, "Close Confirmation?",
        "Are you sure you want to exit?", QMessageBox::Yes | QMessageBox::No))
    {
        event->ignore();
    }
}

当创建
aboutDialog
-框时,您应该像Nejat的评论所建议的那样将
main窗口作为父窗口传递:
aboutDialog=new QDialog(main窗口)。这将确保主窗口关闭时,
aboutDialog
将被关闭。

除了代码混乱之外,如果删除此
aboutDialog->close(),会发生什么情况呼叫?它也会崩溃吗?aboutDialog是程序中的对话框。如果我删除这个程序,它不会崩溃,但在关闭整个程序时,对话框仍然保持打开状态。但随着程序的关闭,对话框也应该关闭(如果是)open@user4345796当实例化时,您可以将指向主窗口的指针作为
aboutDialog
的父级传递,以使其在主窗口关闭时关闭:
QDialog*aboutDialog=new QDialog(this)我不明白你的意思。我应该怎么做,意味着我应该怎么做才能继续进行上述操作?您应该在
main窗口的构造函数中有:
aboutDialog=new QDialog(this)从关闭事件调用
close()
函数?这不会导致对
closeEvent()
的递归调用吗?它可以工作,但问题是即使在关闭程序时,“关于”对话框仍保持打开状态,因此问题只存在于此。