Qt:调用closeEvent(...)的原因

时间:2013-07-12 18:21:32

标签: qt

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

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

在“closeEvent”时间,有没有办法弄清楚为什么要调用它?因为用户关闭了那个特定的窗口,还是因为他刚试过的用户完全放弃了应用程序?

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

1 个答案:

答案 0 :(得分: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:

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

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

否则

您可以根据spontaneous()的{​​{1}}成员进行过滤。

QCloseEvent

希望有所帮助。