diff options
Diffstat (limited to 'src/widgets/itemviews/qabstractitemview.cpp')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index b2f18d134e..1b0b920a50 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -244,6 +244,16 @@ void QAbstractItemViewPrivate::_q_scrollerStateChanged() #endif // QT_NO_GESTURES +void QAbstractItemViewPrivate::_q_delegateSizeHintChanged(const QModelIndex &index) +{ + Q_Q(QAbstractItemView); + if (model) { + if (!model->checkIndex(index)) + qWarning("Delegate size hint changed for a model index that does not belong to this view"); + } + QMetaObject::invokeMethod(q, &QAbstractItemView::doItemsLayout, Qt::QueuedConnection); +} + /*! \class QAbstractItemView @@ -853,7 +863,7 @@ void QAbstractItemView::setItemDelegate(QAbstractItemDelegate *delegate) disconnect(d->itemDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); disconnect(d->itemDelegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); - disconnect(d->itemDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout())); + disconnect(d->itemDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(_q_delegateSizeHintChanged(QModelIndex))); } } @@ -862,7 +872,7 @@ void QAbstractItemView::setItemDelegate(QAbstractItemDelegate *delegate) connect(delegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); connect(delegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); - connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout()), Qt::QueuedConnection); + connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(_q_delegateSizeHintChanged(QModelIndex))); } } d->itemDelegate = delegate; @@ -937,7 +947,7 @@ void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *de disconnect(rowDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); disconnect(rowDelegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); - disconnect(rowDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout())); + disconnect(rowDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(_q_delegateSizeHintChanged(QModelIndex))); } d->rowDelegates.remove(row); } @@ -946,7 +956,7 @@ void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *de connect(delegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); connect(delegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); - connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout()), Qt::QueuedConnection); + connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(_q_delegateSizeHintChanged(QModelIndex))); } d->rowDelegates.insert(row, delegate); } @@ -997,7 +1007,7 @@ void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelega disconnect(columnDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); disconnect(columnDelegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); - disconnect(columnDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout())); + disconnect(columnDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(_q_delegateSizeHintChanged(QModelIndex))); } d->columnDelegates.remove(column); } @@ -1006,7 +1016,7 @@ void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelega connect(delegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); connect(delegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); - connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout()), Qt::QueuedConnection); + connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(_q_delegateSizeHintChanged(QModelIndex))); } d->columnDelegates.insert(column, delegate); } |