diff options
Diffstat (limited to 'src/sql/models/qsqltablemodel.cpp')
-rw-r--r-- | src/sql/models/qsqltablemodel.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp index f7198978dd..40315da204 100644 --- a/src/sql/models/qsqltablemodel.cpp +++ b/src/sql/models/qsqltablemodel.cpp @@ -364,18 +364,9 @@ bool QSqlTableModel::select() if (query.isEmpty()) return false; - QSqlTableModelPrivate::CacheMap::Iterator it = d->cache.end(); - while (it != d->cache.constBegin()) { - --it; - // rows must be accounted for - if (it.value().insert()) { - beginRemoveRows(QModelIndex(), it.key(), it.key()); - it = d->cache.erase(it); - endRemoveRows(); - } else { - it = d->cache.erase(it); - } - } + beginResetModel(); + + d->clearCache(); QSqlQuery qu(query, d->db); setQuery(qu); @@ -383,8 +374,10 @@ bool QSqlTableModel::select() if (!qu.isActive() || lastError().isValid()) { // something went wrong - revert to non-select state d->initRecordAndPrimaryIndex(); + endResetModel(); return false; } + endResetModel(); return true; } |