diff options
Diffstat (limited to 'src/widgets/kernel/qformlayout.cpp')
-rw-r--r-- | src/widgets/kernel/qformlayout.cpp | 27 |
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 |