summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qstackedlayout.cpp
diff options
context:
space:
mode:
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