用不同的方式解释QCloseEvent



我有一个用Qt用c++编写的桌面窗口应用程序,该应用程序有几个顶层窗口,偶尔需要关闭并以编程方式重新创建。此外,当程序的用户单击关闭按钮(最小化和最大化按钮旁边的那个)时,整个程序应该退出。

我的问题是,在这两种情况下,顶层窗口接收QCloseEvent对象的closeEvent()调用。当我看到这种情况发生时,我想退出程序(因为用户可能已经单击了关闭按钮),但也有可能窗口正在关闭,因为我正在以编程方式删除它以重新创建它。

QMainWindow::closeEvent()中是否有区分这两种情况的方法?

在QMainWindow::closeEvent()中是否有区分这两种情况的方法?

是:用户点击窗口关闭按钮触发的关闭事件是自发事件,您调用window->close()触发的关闭事件不是自发事件。更多信息请参见QEvent::spontaneous()的文档

当您需要以编程方式关闭窗口时,请使用deleteLater()而不是close。该窗口将被关闭并删除。要重新打开窗口,您需要创建另一个窗口对象。

您也可以使用hide()方法。窗户会被隐藏起来,但不会被摧毁。可以使用show()再次显示。

在上述两种情况下,close事件都没有发生,closeEvent()也没有被调用。因此,当closeEvent被调用时,您知道用户已经按下了关闭按钮。

相关内容

  • 没有找到相关文章

最新更新