在Mac上单击小部件的红色“关闭”按钮时,您的QWidget将收到“closeEvent”调用。
但是,如果单击键盘上的“cmd-Q”退出应用程序,则打开的QWidget也会收到“closeEvent”。
在“closeEvent”时间,有没有办法弄清楚为什么要调用它?因为用户关闭了那个特定的窗口,还是因为他刚试过的用户完全放弃了应用程序?
或换句话说,QCoreApplication / QAppliction对象是否有一些线索,一些标志表明它在“我即将关闭App”模式,我可以在closeEvent期间检查?
答案 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
希望有所帮助。