diff options
Diffstat (limited to 'src/widgets/itemviews/qtablewidget.cpp')
-rw-r--r-- | src/widgets/itemviews/qtablewidget.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index ee87aa1615..07b8d3484e 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -456,9 +456,12 @@ bool QTableModel::setItemData(const QModelIndex &index, const QMap<int, QVariant itm->view = nullptr; // prohibits item from calling itemChanged() QVector<int> rolesVec; for (QMap<int, QVariant>::ConstIterator it = roles.constBegin(); it != roles.constEnd(); ++it) { - if (itm->data(it.key()) != it.value()) { - itm->setData(it.key(), it.value()); - rolesVec += it.key(); + const int role = (it.key() == Qt::EditRole ? Qt::DisplayRole : it.key()); + if (itm->data(role) != it.value()) { + itm->setData(role, it.value()); + rolesVec += role; + if (role == Qt::DisplayRole) + rolesVec += Qt::EditRole; } } itm->view = view; |