在一个情形下,我们必须使用accept()和ignore()函数,那就是在窗口关闭的时候。这个必须明确显示的调用accept()和ignore(),
在closeEvent()事件处理函数中,accept()是关闭窗口,ignore()是不关闭窗口,只有在closeEvent()中才是这样,
如果你在窗口关闭时需要有个询问对话框,那么就需要这么去写:
closeEvent事件的默认槽函数是QWidget类的CloseEvent()函数,该函数中,会关闭掉当前的widget,
void MainWindow::closeEvent(QCloseEvent *event)
{
if(continueToClose()) {
event->accept();
}else {
event->ignore();
}
}
bool MainWindow::continueToClose()
{
if(QMessageBox::question(this,
tr("Quit"),
tr("Are you sure to quit this application?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No)
== QMessageBox::Yes) {
returntrue;
}else {
return false;
}
}
这样,我们经过询问之后才能正常退出程序。
来源:qevent 事件的accept()和ignore()