summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qformlayout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/kernel/qformlayout.cpp')
-rw-r--r--src/widgets/kernel/qformlayout.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/widgets/kernel/qformlayout.cpp b/src/widgets/kernel/qformlayout.cpp
index fd6482d5af..e1376c754f 100644
--- a/src/widgets/kernel/qformlayout.cpp
+++ b/src/widgets/kernel/qformlayout.cpp
@@ -246,6 +246,7 @@ public:
int hSpacing;
int vSpacing;
+ QLayoutItem* replaceAt(int index, QLayoutItem*) Q_DECL_OVERRIDE;
};
QFormLayoutPrivate::QFormLayoutPrivate()
@@ -1001,6 +1002,32 @@ QStyle* QFormLayoutPrivate::getStyle() const
return QApplication::style();
}
+QLayoutItem* QFormLayoutPrivate::replaceAt(int index, QLayoutItem *newitem)
+{
+ Q_Q(QFormLayout);
+ if (!newitem)
+ return 0;
+ const int storageIndex = storageIndexFromLayoutItem(m_matrix, m_things.value(index));
+ if (storageIndex == -1) {
+ // ### Qt6 - fix warning too when this class becomes public
+ qWarning("QFormLayoutPrivate::replaceAt: Invalid index %d", index);
+ return 0;
+ }
+
+ int row, col;
+ QFormLayoutPrivate::ItemMatrix::storageIndexToPosition(storageIndex, &row, &col);
+ Q_ASSERT(m_matrix(row, col));
+
+ QFormLayoutItem *item = m_matrix(row, col);
+ Q_ASSERT(item);
+
+ QLayoutItem *olditem = item->item;
+ item->item = newitem;
+
+ q->invalidate();
+ return olditem;
+}
+
/*!
\class QFormLayout
\since 4.4