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

标签 qt

在 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();

否则

您可以根据 QCloseEventspontaneous() 成员进行过滤。

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

希望有帮助。

关于Qt:调用 closeEvent(...) 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621525/

相关文章:

c++ - QML 中的两种方式绑定(bind) C++ 模型

c++ - 将 IplImage IPL_DEPTH_32S 转换为 QImage Format_RGB32 的最快方法

python - PyQT5 未找到 zlib 错误

c++ - 如何在 Qt Creator 中添加名称以大写字母开头的 c++ 文件?它会自动使它成为小写字母

c++ - Qt:实现平移(拖动)的正确方法

c++ - 如何在 QPushButtons 上使用 mousePressEvent

c++ - fatal error : QtMultimediaWidgets/QtMultimediaWidgets: No such file or directory

python - PyQt4中如何检测cellwidget用户点击QTableWidget的行号和列号?

c++ - QAbstractItemModel + ModelTest::rowsInserted ASSERTion问题

C++ 单例 undefined reference