diff options
Diffstat (limited to 'src/widgets/itemviews/qlistwidget.cpp')
-rw-r--r-- | src/widgets/itemviews/qlistwidget.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp index ad8aac1415..1fedad80aa 100644 --- a/src/widgets/itemviews/qlistwidget.cpp +++ b/src/widgets/itemviews/qlistwidget.cpp @@ -412,10 +412,10 @@ QList<QListWidgetItem*>::iterator QListModel::sortedInsertionIterator( return std::lower_bound(begin, end, item, QListModelGreaterThan()); } -void QListModel::itemChanged(QListWidgetItem *item) +void QListModel::itemChanged(QListWidgetItem *item, const QVector<int> &roles) { - QModelIndex idx = index(item); - emit dataChanged(idx, idx); + const QModelIndex idx = index(item); + emit dataChanged(idx, idx, roles); } QStringList QListModel::mimeTypes() const @@ -711,8 +711,12 @@ void QListWidgetItem::setData(int role, const QVariant &value) } if (!found) d->values.append(QWidgetItemData(role, value)); - if (QListModel *model = (view ? qobject_cast<QListModel*>(view->model()) : 0)) - model->itemChanged(this); + if (QListModel *model = (view ? qobject_cast<QListModel*>(view->model()) : nullptr)) { + const QVector<int> roles((role == Qt::DisplayRole) ? + QVector<int>({Qt::DisplayRole, Qt::EditRole}) : + QVector<int>({role})); + model->itemChanged(this, roles); + } } /*! @@ -954,7 +958,8 @@ QDataStream &operator>>(QDataStream &in, QListWidgetItem &item) \sa Qt::ItemFlags */ -void QListWidgetItem::setFlags(Qt::ItemFlags aflags) { +void QListWidgetItem::setFlags(Qt::ItemFlags aflags) +{ itemFlags = aflags; if (QListModel *model = (view ? qobject_cast<QListModel*>(view->model()) : 0)) model->itemChanged(this); |