Abort a QCloseEvent



在我的应用程序中,我正在处理一个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());
}

相关内容

  • 没有找到相关文章

最新更新