中止 QCloseEvent
Abort a QCloseEvent
在我的应用程序中,我正在处理 QCloseEvent(当按下关闭按钮 X 时):
void MainWindow::closeEvent(QCloseEvent* event)
{
if ( !isAbortedFilestoSave() ) {
this->close();
}
// else abort
}
如果没有按下中止键,则触发 if 子句。我想实现一个 QCloseEvent 被中止的 else 子句?怎么样?
您必须在事件上使用 ignore()
才能 "abort it" - 让 Qt 知道您不希望小部件实际关闭。
The isAccepted() function returns true if the event's receiver has agreed to close the widget; call accept() to agree to close the widget and call ignore() if the receiver of this event does not want the widget to be closed.
此外,您无需自己调用 close()
- "X" 按钮已经完成了,这就是您收到关闭事件的原因!
所以你的代码应该是:
void MainWindow::closeEvent(QCloseEvent* event)
{
// accept close event if are not aborted
event->setAccepted(!isAbortedFilestoSave());
}
在我的应用程序中,我正在处理 QCloseEvent(当按下关闭按钮 X 时):
void MainWindow::closeEvent(QCloseEvent* event)
{
if ( !isAbortedFilestoSave() ) {
this->close();
}
// else abort
}
如果没有按下中止键,则触发 if 子句。我想实现一个 QCloseEvent 被中止的 else 子句?怎么样?
您必须在事件上使用 ignore()
才能 "abort it" - 让 Qt 知道您不希望小部件实际关闭。
The isAccepted() function returns true if the event's receiver has agreed to close the widget; call accept() to agree to close the widget and call ignore() if the receiver of this event does not want the widget to be closed.
此外,您无需自己调用 close()
- "X" 按钮已经完成了,这就是您收到关闭事件的原因!
所以你的代码应该是:
void MainWindow::closeEvent(QCloseEvent* event)
{
// accept close event if are not aborted
event->setAccepted(!isAbortedFilestoSave());
}