1. 程式人生 > >QT 關閉主視窗,觸發關閉所有開啟的視窗

QT 關閉主視窗,觸發關閉所有開啟的視窗

之前碰到這個問題,今天解決了。

主視窗設定屬性Qt::WA_QuitOnClose

w.setAttribute(Qt::WA_QuitOnClose,true);

Qt::WA_QuitOnClose屬性是使視窗如果是最後一個關閉的時候觸發事件lastWindowClosed();

然後主程式收到事件退出
 a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );

現在問題是自己定義的子視窗開啟的時候,它們預設Qt::WA_QuitOnClose也是true,所以如果主視窗關閉的時候有別的視窗開著,(除了一些暫時性的視窗——如啟動介面、工具視窗、彈出選單)程式還是不會退出,而是等到最後一個視窗關閉之後才退出。

所以現在要把別的視窗的Qt::WA_QuitOnClose設為false。

XX.setAttribute(Qt::WA_QuitOnClose,false);

這樣關閉主視窗的時候,主程式就會退出,其他視窗也會關閉。