From 40e1dd300294486a874c21fdfab96ea3f5d104d8 Mon Sep 17 00:00:00 2001 From: Bent Witthold Date: Thu, 4 Dec 2025 11:30:30 +0100 Subject: [PATCH] A very simple version of editing model data. --- model/modelitem.cpp | 12 +++++++++++- model/tablemodel.cpp | 17 ++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/model/modelitem.cpp b/model/modelitem.cpp index 258c713..b199dfc 100644 --- a/model/modelitem.cpp +++ b/model/modelitem.cpp @@ -5,4 +5,14 @@ ModelItem::ModelItem(const QHash values) QVariant ModelItem::data(int role) const { return m_values.value(role); } -bool ModelItem::setData(const QVariant& value, int role) {} +bool ModelItem::setData(const QVariant& value, int role) { + bool valueChanged = false; + if (m_values.contains(role)) { + if (m_values.value(role) != value) { + valueChanged = true; + } + } + m_values[role] = value; + + return valueChanged; +} diff --git a/model/tablemodel.cpp b/model/tablemodel.cpp index 40b9bb9..2994042 100644 --- a/model/tablemodel.cpp +++ b/model/tablemodel.cpp @@ -31,8 +31,7 @@ TableModel::TableModel(QObject* parent) } Qt::ItemFlags TableModel::flags(const QModelIndex& index) const { - // return Qt::ItemIsEditable | QAbstractTableModel::flags(index); - return QAbstractTableModel::flags(index); + return Qt::ItemIsEditable | QAbstractTableModel::flags(index); } int TableModel::rowCount(const QModelIndex& parent) const { return m_items.size(); } @@ -80,17 +79,9 @@ bool TableModel::setData(const QModelIndex& index, const QVariant& value, int ro if (!checkIndex(index)) { return false; } - // save value from editor to member m_gridData - // m_gridData[index.row()][index.column()] = value.toString(); - // // for presentation purposes only: build and emit a joined string - // QString result; - // for (int row = 0; row < ROWS; row++) { - // for (int col = 0; col < COLS; col++) { - // result += m_gridData[row][col] + ' '; - // } - // } - // emit editCompleted(result); - // return true; + int columnRole = getRoleForColumn(index.column()); + shared_ptr item = m_items.at(index.row()); + return item->setData(value, columnRole); } return false; }