在我的应用程序中,我正在处理一个QCloseEvent(当按下关闭按钮X时):
void MainWindow::closeEvent(QCloseEvent* event)
{
if ( !isAbortedFilestoSave() ) {
this->close();
}
// else abort
}
如果未按中止,则会触发if子句。我想实现一个else子句,其中QCloseEvent被中止?怎样
您必须在事件上使用ignore()
来"中止它"-让Qt知道您不希望小部件真正关闭。
如果事件的接收者同意关闭小部件,则isAccepted()函数返回true;调用accept()以同意关闭小部件,如果此事件的接收方不希望关闭小部件则调用ignore()。
此外,无需自己调用close()
-"X"按钮已经可以做到这一点,这就是为什么您会收到关闭事件!
所以你的代码应该是:
void MainWindow::closeEvent(QCloseEvent* event)
{
// accept close event if are not aborted
event->setAccepted(!isAbortedFilestoSave());
}