src/sql/models/qsqlquerymodel.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
   312 {
   312 {
   313     Q_D(QSqlQueryModel);
   313     Q_D(QSqlQueryModel);
   314     QSqlRecord newRec = query.record();
   314     QSqlRecord newRec = query.record();
   315     bool columnsChanged = (newRec != d->rec);
   315     bool columnsChanged = (newRec != d->rec);
   316     bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize);
   316     bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize);
       
   317     bool hasNewData = (newRec != QSqlRecord()) || !query.lastError().isValid();
   317 
   318 
   318     if (d->colOffsets.size() != newRec.count() || columnsChanged)
   319     if (d->colOffsets.size() != newRec.count() || columnsChanged)
   319         d->initColOffsets(newRec.count());
   320         d->initColOffsets(newRec.count());
   320 
   321 
   321     bool mustClearModel = d->bottom.isValid();
   322     bool mustClearModel = d->bottom.isValid();
   326     }
   327     }
   327 
   328 
   328     d->error = QSqlError();
   329     d->error = QSqlError();
   329     d->query = query;
   330     d->query = query;
   330     d->rec = newRec;
   331     d->rec = newRec;
   331    
   332 
   332     if (mustClearModel)
   333     if (mustClearModel)
   333         endRemoveRows();
   334         endRemoveRows();
   334     
   335 
   335     d->atEnd = false;    
   336     d->atEnd = false;
   336 
   337 
   337     if (columnsChanged)
   338     if (columnsChanged && hasNewData)
   338         reset();
   339         reset();
   339 
   340 
   340     if (!query.isActive() || query.isForwardOnly()) {
   341     if (!query.isActive() || query.isForwardOnly()) {
   341         d->atEnd = true;
   342         d->atEnd = true;
   342         d->bottom = QModelIndex();
   343         d->bottom = QModelIndex();
   415  */
   416  */
   416 bool QSqlQueryModel::setHeaderData(int section, Qt::Orientation orientation,
   417 bool QSqlQueryModel::setHeaderData(int section, Qt::Orientation orientation,
   417                                    const QVariant &value, int role)
   418                                    const QVariant &value, int role)
   418 {
   419 {
   419     Q_D(QSqlQueryModel);
   420     Q_D(QSqlQueryModel);
   420     if (orientation != Qt::Horizontal || section < 0)
   421     if (orientation != Qt::Horizontal || section < 0 || columnCount() <= section)
   421         return false;
   422         return false;
   422 
   423 
   423     if (d->headers.size() <= section)
   424     if (d->headers.size() <= section)
   424         d->headers.resize(qMax(section + 1, 16));
   425         d->headers.resize(qMax(section + 1, 16));
   425     d->headers[section][role] = value;
   426     d->headers[section][role] = value;