1. 程式人生 > >QT 應用程式關閉某個視窗時,關閉開啟的所有其他視窗並退出程式

QT 應用程式關閉某個視窗時,關閉開啟的所有其他視窗並退出程式

專案中當關閉主視窗時,需要將同時開啟的其他視窗關閉,並退出應用程式,實現方法如下:

在main函式中將QApplication::lastWindowClosed()訊號和QApplication::quit()槽函式相關聯,將主視窗的屬性設定為QWidget::setAttribute(WA_QuitOnClose,true);其他視窗該屬性設定為false。

  1. int main(int argc, char *argv[])  
  2. {  
  3.     QApplication a(argc, argv);  
  4.     a.connect( &a,  
  5.            SIGNAL(lastWindowClosed()),  
  6.            &a,  
  7.            SLOT(quit()));  
  8.     int ret = a.exec();  
  9.     return ret;  
  10. }  

具體可參考qt助手中的解釋:

void QApplication::lastWindowClosed () [signal]

This signal is emitted from QApplication::exec() when the last visible primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose

 attribute set is closed.

By default,

  • this attribute is set for all widgets except transient windows such as splash screens, tool windows, and popup menus
  • QApplication implicitly quits when this signal is emitted.

This feature can be turned off by setting quitOnLastWindowClosed to false.