diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp index fcf6d56c0c4..662c9db8928 100644 --- a/src/widgets/widgets/qmainwindow.cpp +++ b/src/widgets/widgets/qmainwindow.cpp @@ -1290,6 +1290,13 @@ bool QMainWindow::event(QEvent *event) return true; #endif // QT_CONFIG(statustip) +#if QT_CONFIG(dockwidget) + case QEvent::Show: + Q_ASSERT(d->layout); + d->layout->showDockWidgets(); + break; +#endif // QT_CONFIG(dockwidget) + case QEvent::StyleChange: #if QT_CONFIG(dockwidget) Q_ASSERT(d->layout); diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp index 99357a83514..7aeab159ddf 100644 --- a/src/widgets/widgets/qmainwindowlayout.cpp +++ b/src/widgets/widgets/qmainwindowlayout.cpp @@ -1494,6 +1494,17 @@ inline static Qt::DockWidgetArea toDockWidgetArea(int pos) return QDockWidgetPrivate::toDockWidgetArea(static_cast(pos)); } +void QMainWindowLayout::showDockWidgets() const +{ + const auto dockWidgets = parent()->findChildren(Qt::FindDirectChildrenOnly); + for (auto *dockWidget : dockWidgets) + dockWidget->show(); + + const auto groupWindows = parent()->findChildren(Qt::FindDirectChildrenOnly); + for (auto *groupWindow : groupWindows) + groupWindow->show(); +} + // Checks if QDockWidgetGroupWindow or QDockWidget can be plugged the area indicated by path. // Returns false if called with invalid widget type or if compiled without dockwidget support. #if QT_CONFIG(dockwidget) diff --git a/src/widgets/widgets/qmainwindowlayout_p.h b/src/widgets/widgets/qmainwindowlayout_p.h index 44ecb08e204..154b2b17c06 100644 --- a/src/widgets/widgets/qmainwindowlayout_p.h +++ b/src/widgets/widgets/qmainwindowlayout_p.h @@ -502,6 +502,7 @@ public: Qt::Orientation orientation); Qt::DockWidgetArea dockWidgetArea(QWidget* widget) const; bool restoreDockWidget(QDockWidget *dockwidget); + void showDockWidgets() const; #if QT_CONFIG(tabbar) void tabifyDockWidget(QDockWidget *first, QDockWidget *second); void raise(QDockWidget *widget);