Qt - 如何拦截应用程序的关闭事件(如果有的话)

Rap*_*ael 4 c++ events qt signals-slots

我需要在应用程序关闭之前做一些工作(注意我说的是我的应用程序,而不是它的主窗口).是否有应用程序关闭事件或任何其他方式来实现此目的?

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

sje*_*397 17

来自QCoreApplication(继承QApplication)的信号aboutToQuit在应用程序终止之前立即被触发.


Gre*_*ill 8

您的申请可能源自QApplication.您可以将清理代码放在应用程序的析构函数中:

class MyApp: public QApplication {
public:
    ~MyApp() {
        // cleanup code here
    }
};
Run Code Online (Sandbox Code Playgroud)

或者,在你的main(),你可能有这样的事情:

int main(int argc, char *argv[]) {
    MyApp a(argc, argv);
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

你可以在打电话后做的工作exec():

int main(int argc, char *argv[]) {
    MyApp a(argc, argv);
    int r = a.exec();
    // cleanup code here
    return r;
}
Run Code Online (Sandbox Code Playgroud)