2

在 Mac 上,当您单击小部件的红色“关闭”按钮时,您的 QWidget 将收到一个“closeEvent”调用。

但是,如果您单击键盘上的“cmd-Q”退出应用程序,您打开的 QWidget 也会收到一个“closeEvent”。

在“closeEvent”时间,有没有办法弄清楚它为什么被调用?是因为用户关闭了该特定窗口,还是因为用户刚刚尝试完全退出应用程序?

或者换句话说,QCoreApplication/QAppliction 对象是否有一些线索,一些标志表明它处于“我即将关闭应用程序”模式,我可以在 closeEvent 期间检查?

4

1 回答 1

2

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 slots: protected:

可以查询发件人的objectName closeEvent()

qDebug() << QObject::sender()->objectName();

否则

您可以根据 的spontaneous()成员进行过滤QCloseEvent

qDebug() << closeEvent->spontaneous();

希望有帮助。

于 2013-07-12T18:55:10.613 回答