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; }