應用程序中只有唯一一個QDialog,如果點擊它上面的關閉按鈕,或者調(diào)用了reject(),accept()方法,那么QApplication的事件循環(huán)就會結(jié)束,讓整個應用程序退出。
但是有時候,例如一個程序,沒有界面,只有右下角的任務欄上有一個圖標,右擊圖標彈出菜單,可以進行設置。如設置參數(shù)時,會創(chuàng)建一個QDialog窗口,設置完成后,這個窗口被關閉,這時整個程序就會退出了。為了解決這一問題。可以重寫closeEvent()函數(shù),如下:
void SetupDialog::closeEvent(QCloseEvent *e) {
e->ignore();
reject();
}
這樣,如果有確定按鈕或者取消按鈕時,他們相對應的slot中調(diào)用close()方法去關閉窗口,至于在closeEvent函數(shù)中使用reject()還是accpet()函數(shù),使用自己設定的一個標志來判斷就可以了,關鍵在于()e->ignore()這個函數(shù)的調(diào)用。