【发布时间】:2021-12-23 14:24:09
【问题描述】:
在带有 Qt 5.2 和以下应用程序代码的 OS X 10.9 上
#include "mywindow.h"
#include <QApplication>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MyWindow w();
w.show();
return a.exec(); }
其中MyWindow派生自QMainWindow并覆盖closeEvent(QCloseEvent*)方法,当我关闭应用程序窗口时调用此方法(例如单击窗口(x)关闭按钮),但在我关闭时不会调用应用程序通过主菜单 -> “退出”或通过“CMD + Q”快捷键。
通过浏览网络和众多问题,我得到的印象是关闭应用程序应该为所有顶级窗口调用 closeEvent。是不是这样,还是这里出了什么问题?
编辑:除了上述关闭应用程序的方法之外,我通常应该处理的任何其他实例会导致QApplication::quit,而不是调用窗口的close 事件?例如,系统关闭会怎样?
在处理close 事件时,我确认用户确实想要退出,并且我确保正在进行清理,例如写回更改的设置。我是否应该将清理/保存设置移动到析构函数并在closeEvent 中进行确认查询?
【问题讨论】: