C++ (Qt)//! [1]bool EditableSqlModel::setData(const QModelIndex &index, const QVariant &value, int /* role */){ if (!editableFields.contains(index.column())) return false; QModelIndex primaryKeyIndex = QSqlQueryModel::index(index.row(), keyFieldNumber); int id = data(primaryKeyIndex).toInt(); clear(); bool ok = setDataToQuery(id, index.column(), value); refresh(); return ok;}//! [1] //! [2]bool EditableSqlModel::setDataToQuery(QVariant keyValue, int fNumber, const QVariant &value){ QString lSQL = "update " + tableName + " set " + editableFields[fNumber] + " = ? where " + keyFieldName + " = ?"; QSqlQuery query; query.prepare(lSQL); query.addBindValue(value); query.addBindValue(keyValue); return query.exec();}//! [2]
C++ (Qt)
bool EditableSqlModel::setData(const QModelIndex &index, const QVariant &value, int role){ if (role != Qt::EditRole) return QSqlQueryModel::setData(index, value, role); if (!editableFields.contains(index.column())) return false; QModelIndex primaryKeyIndex = QSqlQueryModel::index(index.row(), keyFieldNumber); int id = data(primaryKeyIndex).toInt(); clear(); bool ok = setDataToQuery(id, index.column(), value); refresh(); return ok;}