2010-12-07 55 views
4

我需要在應用程序關閉前做一些工作(注意我說我的應用程序和而不是它是主窗口)。是否有應用程序關閉事件或任何其他方式來完成此事?Qt - 如何攔截應用程序的關閉事件(如果有的話)

我不能依賴主窗口的關閉事件的原因是我的應用程序在背景上運行留下系統托盤圖標。

回答

8

您的申請可能源自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; 
} 
+0

我會嘗試第二個選項。這是否會讓操作系統顯示消息「以下應用程序阻止關機」? – Raphael 2010-12-07 21:44:11

+0

@Raphael:只要你不想做任何需要時間的事情(例如聯繫外部服務器),那麼你應該沒問題。 – 2010-12-07 21:46:26

16

有一個信號從QCoreApplication(繼承QApplication)稱爲aboutToQuit這是fi在應用程序終止之前立即變爲紅色。

相關問題