1. 程式人生 > >Qt:關閉唯一的主視窗,讓QApplication的event loop不退出

Qt:關閉唯一的主視窗,讓QApplication的event loop不退出

應用程式中只有唯一一個QDialog,如果點選它上面的關閉按鈕,或者呼叫了reject(),accept()方法,那麼QApplication的事件迴圈就會結束,讓整個應用程式退出。 但是有時候,例如一個程式,沒有介面,只有右下角的工作列上有一個圖示,右擊圖示彈出選單,可以進行設定。如設定引數時,會建立一個QDialog視窗,設定完成後,這個視窗被關閉,這時整個程式就會退出了。為了解決這一問題。可以重寫closeEvent()函式,如下: void SetupDialog::closeEvent(QCloseEvent *e) {     e->ignore();     reject(); } 這樣,如果有確定按鈕或者取消按鈕時,他們相對應的slot中呼叫close()方法去關閉視窗,至於在closeEvent函式中使用reject()還是accpet()函式,使用自己設定的一個標誌來判斷就可以了,關鍵在於()e->ignore()這個函式的呼叫。