C++ Qt中关闭事件时程序崩溃
我试图将关闭事件设置为我的代码,但当我设置此代码时,我的程序崩溃 mainwindow.cppC++ Qt中关闭事件时程序崩溃,c++,qt,C++,Qt,我试图将关闭事件设置为我的代码,但当我设置此代码时,我的程序崩溃 mainwindow.cpp void MainWindow::closeEvent(QCloseEvent *event) { event->ignore(); if (QMessageBox::Yes == QMessageBox::question(this, "Close Confirmation?",
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()
的递归调用吗?它可以工作,但问题是即使在关闭程序时,“关于”对话框仍保持打开状态,因此问题只存在于此。