summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorLuca Beldi <v.ronin@yahoo.it>2018-08-01 16:43:31 +0100
committerLuca Beldi <v.ronin@yahoo.it>2018-08-17 07:17:12 +0000
commitd0069ff8c91e0027a0a1f3ef7767dbb13e0eacc4 (patch)
tree4305eb9240e4880edda8f355cdc057a92ce6dd6c /src/gui
parent67352c92761fcb2e2c6a98b24e1bf5f33805cb3a (diff)
Add a method to clear the data to QStandardItemModel
After the behavior of setItemData has been changed following QTBUG-45114, QStandardItemModel was lacking an interface to clear all the data from a single index. Task-number: QTBUG-69616 Change-Id: Ide0b5bb6358439fc42c474df8b044fbace6def8d Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp32
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.h3
2 files changed, 35 insertions, 0 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index 235bc5bd7d..a771bffa2f 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -931,6 +931,21 @@ void QStandardItem::setData(const QVariant &value, int role)
}
/*!
+ \since 5.12
+ Removes all the data from all roles previously set.
+ \sa data(), setData()
+*/
+void QStandardItem::clearData()
+{
+ Q_D(QStandardItem);
+ if (d->values.isEmpty())
+ return;
+ d->values.clear();
+ if (d->model)
+ d->model->d_func()->itemChanged(this, QVector<int>{});
+}
+
+/*!
Returns the item's data for the given \a role, or an invalid
QVariant if there is no data for the role.
@@ -2991,6 +3006,23 @@ bool QStandardItemModel::setData(const QModelIndex &index, const QVariant &value
}
/*!
+ \since 5.12
+ Removes the data stored in all the roles for the given \a index.
+ \sa setData(), data()
+*/
+bool QStandardItemModel::clearItemData(const QModelIndex &index)
+{
+ if (!checkIndex(index, CheckIndexOption::IndexIsValid))
+ return false;
+ Q_D(QStandardItemModel);
+ QStandardItem *item = d->itemFromIndex(index);
+ if (!item)
+ return false;
+ item->clearData();
+ return true;
+}
+
+/*!
\reimp
*/
bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role)
diff --git a/src/gui/itemmodels/qstandarditemmodel.h b/src/gui/itemmodels/qstandarditemmodel.h
index 827179b31d..a9ee25da75 100644
--- a/src/gui/itemmodels/qstandarditemmodel.h
+++ b/src/gui/itemmodels/qstandarditemmodel.h
@@ -69,6 +69,7 @@ public:
virtual QVariant data(int role = Qt::UserRole + 1) const;
virtual void setData(const QVariant &value, int role = Qt::UserRole + 1);
+ void clearData();
inline QString text() const {
return qvariant_cast<QString>(data(Qt::DisplayRole));
@@ -343,6 +344,8 @@ public:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
+ // Qt 6: add override keyword
+ bool clearItemData(const QModelIndex &index);
QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const override;