Roles can now be declared read-only. First read-only role: IdRole

This commit is contained in:
2026-04-02 09:37:36 +02:00
parent a9a4b39da1
commit 54d537dc9b
2 changed files with 20 additions and 7 deletions

View File

@ -40,10 +40,19 @@ TableModel::TableModel(QUndoStack* undoStack, QObject* parent)
, m_undoStack(undoStack) {}
Qt::ItemFlags TableModel::flags(const QModelIndex& index) const {
Qt::ItemFlags result = QAbstractTableModel::flags(index);
if (!index.isValid()) {
return QAbstractTableModel::flags(index);
return result;
}
return Qt::ItemIsEditable | QAbstractTableModel::flags(index);
const int column = index.column();
const int roleForColumn = GET_ROLE_FOR_COLUMN(column);
/// roles which aren't editable by the user
if (READ_ONLY_ROLES.contains(roleForColumn)) {
return result;
}
return result | Qt::ItemIsEditable;
}
QHash<int, QByteArray> TableModel::roleNames() const { return ROLE_NAMES; }
@ -341,8 +350,6 @@ int TableModel::getAppropriateRoleForIndex(const QModelIndex& index, const int r
}
QModelIndex TableModel::searchItemIndex(const ModelItemValues givenItemValues) const {
// iterate over indexes to search item : see searchItem(...);
// for (const shared_ptr<ModelItem>& item : m_items) {
for (int row = 0; row < rowCount(); ++row) {
qDebug() << "Processing item at row" << row << "...";
QModelIndex itemIndex = index(row, 0);