diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2023-11-14 17:24:44 +0200 |
---|---|---|
committer | Ahmad Samir <a.samirh78@gmail.com> | 2023-11-14 21:23:45 +0200 |
commit | 85eebedb16da67d9f2caeb14ed45c2dae8f82837 (patch) | |
tree | 36546a9fe3e3f4747c888c98e36f51f8ebd9caac /tests/auto | |
parent | 77e0e7c414b7547a36734cfea3e5b237329c93ab (diff) |
QStandardItem: add note about reimplementing data/setData() wrt. flags
Extend the unittests.
Drive-by change: add missing include, otherwise static analyzers
(clangd) complain.
Fixes: QTBUG-105150
Pick-to: 6.6 6.5 5.15
Change-Id: I312133d5b35119e2e51002dfefe0e141c0708e3d
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp index 6f42c45821..b060458ea6 100644 --- a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp +++ b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp @@ -1006,6 +1006,32 @@ public: using QStandardItem::clone; using QStandardItem::emitDataChanged; + + void setData(const QVariant &value, int role) override + { + switch (role) { + case Qt::DisplayRole: + QStandardItem::setData(value, role); + break; + default: + // setFlags() uses "UserRole - 1" to store the flags, which is an + // implementation detail not exposed in the docs. + QStandardItem::setData(value, role); + break; + } + } + + QVariant data(int role) const override + { + switch (role) { + case Qt::DisplayRole: + return QStandardItem::data(role); + default: + // flags() uses "UserRole - 1" to get the flags, which is an implementation + // detail not exposed in the docs. + return QStandardItem::data(role); + } + } }; Q_DECLARE_METATYPE(QStandardItem*) @@ -1041,6 +1067,12 @@ void tst_QStandardItem::subclassing() QCOMPARE(item->child(0), child2); QCOMPARE(item->child(1), child0); QCOMPARE(item->child(2), child1); + + item->setFlags(Qt::ItemFlags{0}); + QCOMPARE(item->flags(), Qt::ItemFlags{0}); + + item->setFlags(Qt::ItemFlags{Qt::ItemIsEditable | Qt::ItemIsSelectable}); + QCOMPARE(item->flags(), Qt::ItemFlags{Qt::ItemIsEditable | Qt::ItemIsSelectable}); } void tst_QStandardItem::lessThan() |