summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqltablemodel.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index b979a1a23a..a3fdd06442 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1373,15 +1373,17 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &values)
Map::const_iterator i = map.constBegin();
const Map::const_iterator e = map.constEnd();
for ( ; i != e; ++i) {
- mrow.setValue(i.value(), values.value(i.key()));
- // mrow.setValue() sets generated to TRUE, but source record should prevail.
+ // have to use virtual setData() here rather than mrow.setValue()
+ EditStrategy strategy = d->strategy;
+ d->strategy = OnManualSubmit;
+ QModelIndex cIndex = createIndex(row, i.value());
+ setData(cIndex, values.value(i.key()));
+ d->strategy = strategy;
+ // setData() sets generated to TRUE, but source record should prevail.
if (!values.isGenerated(i.key()))
mrow.recRef().setGenerated(i.value(), false);
}
- if (columnCount())
- emit dataChanged(createIndex(row, 0), createIndex(row, columnCount() - 1));
-
if (d->strategy != OnManualSubmit)
return submit();