Класс QSqlQueryModel предназначен для реализации sql запроса к базе данных и возврату результата в виде таблицы. Это в двух словах.
В нем реализована ограничение на вычитывание данных, то есть порциями, чтобы не вычитать сразу 1000000 записей и не подвесить систему.
Основная функция setQuery. Она и посылает запрос в виде строки. Потом может быть второй запрос с другим содержанием и потом еще совсем другой запрос к другой таблице. И так далее.
Соответственно возвращаемые результаты (таблицы из колонок и строк) могут быть вообще разными.
QSqlQueryModel это на самом деле обертка над классом QSqlQuery , который и реализует работу с базой данных и через него предоставляется результат в виде QSqlResult.
class QSqlQueryModelPrivate: public QAbstractItemModelPrivate
{
Q_DECLARE_PUBLIC(QSqlQueryModel)
public:
QSqlQueryModelPrivate() : atEnd(false) {}
~QSqlQueryModelPrivate();
void prefetch(int);
void initColOffsets(int size);
mutable QSqlQuery query; // вот здесь (через query) идет работа с базой данных
mutable QSqlError error;
QModelIndex bottom;
QSqlRecord rec; // это текущая запись при навигации
uint atEnd : 1;
QVector > headers;
QVarLengthArray colOffsets; // used to calculate indexInQuery of columns
};
Далее развитие работы с базами данных приводит в Qt к QSqlTableModel.