Qt - Как перехватить событие закрытия приложения (если оно есть) - PullRequest
4 голосов
/ 08 декабря 2010

Мне нужно выполнить некоторую работу прямо перед закрытием приложения (обратите внимание, что я сказал, что мое приложение и не это главное окно).Есть ли событие закрытия приложения или любой другой способ сделать это?

Причина, по которой я не могу рассчитывать на событие закрытия главного окна, заключается в том, что мое приложение работает в фоновом режиме, оставляя значок в системном трее.

Ответы [ 2 ]

17 голосов
/ 08 декабря 2010

Есть сигнал от QCoreApplication (унаследованный QApplication) с именем aboutToQuit, который запускается непосредственно перед завершением приложения.

8 голосов
/ 08 декабря 2010

Ваша заявка, вероятно, получена из 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():

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