在 Mac 上,当您单击小部件的红色“关闭”按钮时,您的 QWidget 将收到“closeEvent”调用。
但是,如果您单击键盘上的“cmd-Q”退出应用程序,您打开的 QWidget 也会收到“closeEvent”。
在“closeEvent”时间,有没有办法找出它被调用的原因?因为用户关闭了该特定窗口,或者因为用户刚刚尝试完全退出应用程序?
或者换句话说,QCoreApplication/QAppliction 对象是否有一些线索,一些标志表明它处于“我即将关闭应用程序”模式,我可以在 closeEvent 期间检查?
最佳答案
http://qt-project.org/doc/qt-4.8/signalsandslots.html#advanced-signals-and-slots-usage
http://qt-project.org/doc/qt-4.8/qevent.html#spontaneous
http://qt-project.org/doc/qt-4.8/qcloseevent-members.html
如果将 void closeEvent()
放入 public slot:
protected:
可以查询closeEvent()
发送者的objectName。
qDebug() << QObject::sender()->objectName();
否则
您可以根据 QCloseEvent
的 spontaneous()
成员进行过滤。
qDebug() << closeEvent->spontaneous();
希望有帮助。
关于Qt:调用 closeEvent(...) 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621525/