我试图将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;
我很困惑为什么会这样。帮我解决这个问题!
答案 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}}将关闭。