From e24f75af4db89ebdfd3d48e9d007238a1b990cd2 Mon Sep 17 00:00:00 2001 From: Sune Vuorela Date: Mon, 16 Sep 2013 23:54:21 +0200 Subject: Implement QMainWindow::takeCentralWidget() This allows the application developer to restructure the application, including moving the central widget some place else. Change-Id: Idca2f74c190500db24404e020b0eb400e41aad10 Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qmainwindow.cpp | 16 ++++++++++++++++ src/widgets/widgets/qmainwindow.h | 2 ++ 2 files changed, 18 insertions(+) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp index 436fb65dd2..0df83189ba 100644 --- a/src/widgets/widgets/qmainwindow.cpp +++ b/src/widgets/widgets/qmainwindow.cpp @@ -629,6 +629,22 @@ void QMainWindow::setCentralWidget(QWidget *widget) d->layout->setCentralWidget(widget); } +/*! + Removes the central widget from this main window. + + The ownership of the removed widget is passed to the caller. + + \since Qt 5.2 +*/ +QWidget *QMainWindow::takeCentralWidget() +{ + Q_D(QMainWindow); + QWidget *oldcentralwidget = d->layout->centralWidget(); + oldcentralwidget->setParent(0); + d->layout->setCentralWidget(0); + return oldcentralwidget; +} + #ifndef QT_NO_DOCKWIDGET /*! Sets the given dock widget \a area to occupy the specified \a diff --git a/src/widgets/widgets/qmainwindow.h b/src/widgets/widgets/qmainwindow.h index d9edf711e0..8411bf9f6b 100644 --- a/src/widgets/widgets/qmainwindow.h +++ b/src/widgets/widgets/qmainwindow.h @@ -137,6 +137,8 @@ public: QWidget *centralWidget() const; void setCentralWidget(QWidget *widget); + QWidget *takeCentralWidget(); + #ifndef QT_NO_DOCKWIDGET void setCorner(Qt::Corner corner, Qt::DockWidgetArea area); Qt::DockWidgetArea corner(Qt::Corner corner) const; -- cgit v1.2.3