diff options
author | Mitch Curtis <mitch.curtis@digia.com> | 2012-11-02 17:19:59 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-02 18:07:54 +0100 |
commit | 61e0fa5d689264fa776aab4e8f8cd5e6f7b458de (patch) | |
tree | 5c1aaf25234131839e62ee4d23fa3c0924fa1c5c /src | |
parent | b4dd6faac30c80ea3154ba19e61eec72984ad4b6 (diff) |
Make it obvious that adding a QLayout to QSplitter is not supported.
It does not make sense to add a QLayout to a QSplitter, since the
splitter manages its child widgets in the same manner as a QLayout.
The result of doing so is that the child widgets inside that layout
will lead to the splitter and the layout fighting to position the child
widgets.
QSplitter::addWidget should be used to add widgets directly to the
splitter instead.
Change-Id: I640b463cae8673f87354d28636bff4dd3cfb9679
Reviewed-by: Samu Voutilainen <samu.voutilainen@gmail.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/widgets/qsplitter.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index 794a824589..bbd5695e9b 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -917,6 +917,10 @@ QSplitterLayoutStruct *QSplitterPrivate::insertWidget(int index, QWidget *w) When you hide() a child its space will be distributed among the other children. It will be reinstated when you show() it again. + \note Adding a QLayout to a QSplitter is not supported (either through + setLayout() or making the QSplitter a parent of the QLayout); use addWidget() + instead (see example above). + \sa QSplitterHandle, QHBoxLayout, QVBoxLayout, QTabWidget */ @@ -1207,8 +1211,11 @@ int QSplitter::count() const void QSplitter::childEvent(QChildEvent *c) { Q_D(QSplitter); - if (!c->child()->isWidgetType()) + if (!c->child()->isWidgetType()) { + if (c->type() == QEvent::ChildAdded && qobject_cast<QLayout *>(c->child())) + qWarning("Adding a QLayout to a QSplitter is not supported."); return; + } QWidget *w = static_cast<QWidget*>(c->child()); if (c->added() && !d->blockChildAdd && !w->isWindow() && !d->findWidget(w)) { d->insertWidget_helper(d->list.count(), w, false); |