Qt QSqlRelationalTableModel неверное число записей

В форме отображается всего 10 записей.

model = new QSqlRelationalTableModel(this, db);
model->setTable("products");
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->select();

model->rowCount() возвращает 10 записей, хотя в таблице у меня 16.

В чем может быть дело?


Ответы (1 шт):

Автор решения: isnullxbh

Я, конечно, могу ошибаться, но SQLite API не предоставляет отдельной функции для выполнения запроса select, там есть что-то вроде sqlite3_exec, которому передается коллбэк, который вызывается на каждой записи результата. Соответственно, нет и возможности стандартным путем узнать, сколько строк оказалось в полученном результате.

А вот что пишут в документации к исходному коду:

If the database supports returning the size of a query (see QSqlDriver::hasFeature()), the number of rows of the current query is returned. Otherwise, returns the number of rows currently cached on the client.

Попробуйте в цикле вызывать fetchMore(). Проверить, что данная операция имеет смысл можно с помощью canFetchMore().

→ Ссылка