C++ Qt-如何拦截应用程序';s关闭事件(如果有)

C++ Qt-如何拦截应用程序';s关闭事件(如果有),c++,events,qt,signals-slots,C++,Events,Qt,Signals Slots,我需要在我的应用程序关闭之前做一些工作(注意,我说的是我的应用程序,而不是它的主窗口)。是否有应用程序关闭事件或任何其他方法来完成此操作 我不能依赖主窗口的关闭事件的原因是,我的应用程序在后台运行,留下一个系统托盘图标。您的应用程序可能来自QApplication。您可以将清理代码放入应用程序的析构函数中: class MyApp: public QApplication { public: ~MyApp() { // cleanup code here } };

我需要在我的应用程序关闭之前做一些工作(注意,我说的是我的应用程序,而不是它的主窗口)。是否有应用程序关闭事件或任何其他方法来完成此操作


我不能依赖主窗口的关闭事件的原因是,我的应用程序在后台运行,留下一个系统托盘图标。

您的应用程序可能来自
QApplication
。您可以将清理代码放入应用程序的析构函数中:

class MyApp: public QApplication {
public:
    ~MyApp() {
        // cleanup code here
    }
};
或者,在
main()
中,您可能有如下内容:

int main(int argc, char *argv[]) {
    MyApp a(argc, argv);
    return a.exec();
}
您可以在调用
exec()
后执行以下操作:


有一个来自
QCoreApplication
(由
QApplication
继承)的调用信号在应用程序终止之前立即触发。

我将尝试第二个选项。这是否会让操作系统显示消息“以下应用程序正在阻止关机”@Raphael:只要你不想做任何需要花费时间的事情(例如联系外部服务器),那么你就应该没事了。写入文件怎么样?像Sqlite文件吗?@Raphael:你写文件可能没问题。当然,这需要使用您的操作系统进行测试。如果某些活动正在运行,我如何使用此功能来防止应用程序关闭?@pra16您应该作为一个适当的问题来提问。
int main(int argc, char *argv[]) {
    MyApp a(argc, argv);
    int r = a.exec();
    // cleanup code here
    return r;
}