From 551e11c286b45d3e94b38f0e5df95f443c15f0bd Mon Sep 17 00:00:00 2001 From: Luca Beldi Date: Mon, 3 Sep 2018 10:13:53 +0100 Subject: Implement clearItemData in common models A virtual method clearItemData was added to QAIM for Qt6. This patch implements that method to all Qt concrete models for which it makes sense. Task-number: QTBUG-69616 Change-Id: If980fcfc36f723128bc56ec4587c5c3a338dbbcc Reviewed-by: David Faure --- src/widgets/itemviews/qtreewidget.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/widgets/itemviews/qtreewidget.cpp') diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index a0af27115d..a898661963 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -390,6 +390,27 @@ bool QTreeModel::setData(const QModelIndex &index, const QVariant &value, int ro return false; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +bool QTreeModel::clearItemData(const QModelIndex &index) +{ + if (!checkIndex(index, CheckIndexOption::IndexIsValid)) + return false; + QTreeWidgetItem *itm = item(index); + if (!itm) + return false; + const auto beginIter = itm->values.at(index.column()).cbegin(); + const auto endIter = itm->values.at(index.column()).cend(); + if (std::all_of(beginIter, endIter, [](const QWidgetItemData& data) -> bool { return !data.value.isValid(); }) + && !itm->d->display.at(index.column()).isValid()) { + return true; //it's already cleared + } + itm->d->display[index.column()] = QVariant(); + itm->values[index.column()].clear(); + emit dataChanged(index, index, QVector{}); + return true; +} +#endif + QMap QTreeModel::itemData(const QModelIndex &index) const { QMap roles; -- cgit v1.2.3