diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-05-03 21:11:57 +0200 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-05-14 18:17:35 +0000 |
commit | 71a1df5456ebe7070533b469434a964e7de5a5c7 (patch) | |
tree | ea8fd0a489cca1c8bf6ba67d529dde2ac2ee8120 /src/widgets/itemviews/qtablewidget.cpp | |
parent | 432df3f8c8504b333ecc76df4ce19a7b2c04ae77 (diff) |
QTableWidget: fix handling of Qt::EditRole/DisplayRole in setItemData()
QTableModel::setItemData() did not treat Qt::EditRole and
Qt::DisplayRole as the same. This lead to inconsistencies between
setItemData() and QTableWidgetItem::setData()
[ChangeLog][QtWidgets][QTableWidget] Fix handling of Qt::EditRole and
Qt::DisplayRole in setItemData().
Change-Id: I456f4c8e654de701dcd579236162b8aaa8ba1e53
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
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; |