MDIウィンドウを閉じる
QMdiAreaで子ウィンドウを沢山開いている時、MainWindowのcloseEventはどう処理すれば良いのでしょう? 最初、SubWindowのリストを一つ一つcloseしていったんですが、この方法だと、「保存していませんが閉じますか? Yes/No/Cancel」のようなダイアログで子ウィンドウを閉じるのをキャンセルした時に、子ウィンドウがおかしくなる現象が起きました。
QMdiAreaには closeAllSubWindows() というメソッドがあるので、こちらを使うのが良さそうです。
mWidgetCentral->mMdiArea->closeAllSubWindows(); QMdiSubWindow* c = mWidgetCentral->mMdiArea->currentSubWindow(); if (c != NULL) { // 子ウィンドウが残ってるので、閉じない event->ignore(); }