我有一个无模式对话框,它会覆盖closeEvent()以保存其状态。如果我实际关闭对话框,这工作正常。但是,如果我只是以任何方式退出应用程序(这当然会导致我的对话框关闭),那么closeEvent()永远不会被调用。
这是设计的吗?这是一个Qt错误吗?是否有类似于我需要在窗口小部件上设置的属性,以告诉它在应用程序关闭时接收关闭事件?
我想我可以在对话框的析构函数中复制“保存状态”代码,但如果我不必这样做会更好。
感谢您的任何想法!
答案 0 :(得分:3)
也许您可以使用棘手的解决方案:只需从MainWindow的closeEvent
调用对话框的closeEvent
,将QCloseEvent
对象作为参数传递。例如:
void QtMainWindowTest::closeEvent(QCloseEvent *ev)
{
_dlg ->closeEvent(ev);
}
答案 1 :(得分:1)
Qt中存在一个错误,当应用程序通过菜单命令退出(而不是关闭最后一个QMainWindow
)时,事件系统没有正确关闭,堆上的对象只是泄漏。它基本上只是立即调用exit();
。
我在Mac平台上为此提交了bug。我不知道你的平台是什么,以及它是否也受到影响。