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