diff -r 56cd8111b7f7 -r 41300fa6a67c src/sql/models/qsqlquerymodel.cpp --- a/src/sql/models/qsqlquerymodel.cpp Tue Jan 26 12:42:25 2010 +0200 +++ b/src/sql/models/qsqlquerymodel.cpp Tue Feb 02 00:43:10 2010 +0200 @@ -314,6 +314,7 @@ QSqlRecord newRec = query.record(); bool columnsChanged = (newRec != d->rec); bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize); + bool hasNewData = (newRec != QSqlRecord()) || !query.lastError().isValid(); if (d->colOffsets.size() != newRec.count() || columnsChanged) d->initColOffsets(newRec.count()); @@ -328,13 +329,13 @@ d->error = QSqlError(); d->query = query; d->rec = newRec; - + if (mustClearModel) endRemoveRows(); - - d->atEnd = false; - if (columnsChanged) + d->atEnd = false; + + if (columnsChanged && hasNewData) reset(); if (!query.isActive() || query.isForwardOnly()) { @@ -417,7 +418,7 @@ const QVariant &value, int role) { Q_D(QSqlQueryModel); - if (orientation != Qt::Horizontal || section < 0) + if (orientation != Qt::Horizontal || section < 0 || columnCount() <= section) return false; if (d->headers.size() <= section)