summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qstackedlayout.cpp
diff options
context:
space:
mode:
authorThorbjørn Lund Martsum <tmartsum@gmail.com>2012-09-03 06:35:39 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-21 23:17:55 +0200
commit42d681f9cfc984046a93b9efe19903d46ac68bb1 (patch)
tree0a93a177458dc661b9ceb200f8fa21250b6b601f /src/widgets/kernel/qstackedlayout.cpp
parente327ba191df56f3315a004d7650d5f1080f12acb (diff)
Add widget replace function to QLayout
Sometimes it is nice to be able to replace a widget in a layout. Change-Id: I23a6a65e417e94d53bc48639503db1a142bc3f10 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'src/widgets/kernel/qstackedlayout.cpp')
-rw-r--r--src/widgets/kernel/qstackedlayout.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/widgets/kernel/qstackedlayout.cpp b/src/widgets/kernel/qstackedlayout.cpp
index 9514877e50..316103b097 100644
--- a/src/widgets/kernel/qstackedlayout.cpp
+++ b/src/widgets/kernel/qstackedlayout.cpp
@@ -53,11 +53,29 @@ class QStackedLayoutPrivate : public QLayoutPrivate
Q_DECLARE_PUBLIC(QStackedLayout)
public:
QStackedLayoutPrivate() : index(-1), stackingMode(QStackedLayout::StackOne) {}
+ QLayoutItem* replaceAt(int index, QLayoutItem *newitem) Q_DECL_OVERRIDE;
QList<QLayoutItem *> list;
int index;
QStackedLayout::StackingMode stackingMode;
};
+QLayoutItem* QStackedLayoutPrivate::replaceAt(int idx, QLayoutItem *newitem)
+{
+ Q_Q(QStackedLayout);
+ if (idx < 0 || idx >= list.size() || !newitem)
+ return 0;
+ QWidget *wdg = newitem->widget();
+ if (!wdg) {
+ qWarning("QStackedLayout::replaceAt: Only widgets can be added");
+ return 0;
+ }
+ QLayoutItem *orgitem = list.at(idx);
+ list.replace(idx, newitem);
+ if (idx == index)
+ q->setCurrentIndex(index);
+ return orgitem;
+}
+
/*!
\class QStackedLayout