程序在Qt中关闭事件时崩溃

时间:2014-12-10 13:09:45

标签: c++ qt

我试图将close事件设置为我的代码,但是当我设置此代码时,我的程序崩溃了。

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();
}

mainwindow.h

private:
QDialog *aboutDialog;

我很困惑为什么会这样。帮我解决这个问题!

1 个答案:

答案 0 :(得分:0)

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

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 - 框时,您应该将mainWindow作为Nejat的评论建议的父母aboutDialog = new QDialog(mainWindow);传递:aboutDialog。这将确保在主窗口关闭时{{1}}将关闭。