Я отображаю QSqlTableModel в QSqlTableModel::OnManualSubmit
Режим.
Я хочу выполнить запросы в стиле SQL на моей локальной копии, например, у меня есть getMax
функция, которая меняется по мере добавления новых строк. Если мой пользователь локально изменяет QSqlTableModel
во время взаимодействия я ожидаю getMax
произвести другой ввод, но вместо getMax
Функция удаленно запрашивает данные, и результат всегда будет одинаковым, независимо от изменений, внесенных пользователем.
int TestMe::getMax(QString col,QString table)
{
QSqlQuery query;
sf(query.exec("SELECT MAX("+col+") FROM "+table));
sf(query.first());
auto rec = query.record();
return rec.field(0).value().toInt();
}
Как мне выполнить запросы к моей локальной копии модели?
QSqlTableModel
(или в более общем QSqlQueryModel
) делегирует выполнение запроса QSqlQuery
, Когда результаты запроса получены, они хранятся внутри в виде таблицы со строками и столбцами, и вы можете получить к ним доступ, используя QModelIndex
а также QAbstractItemModel::data()
,
QSqlTableModel
сам не является интерпретатором SQL. Не за что. Он не предоставляет никаких процедур анализа для вас. Это не цель этого класса. Если вам нужен анализ данных в модели, вы должны написать это самостоятельно.
Других решений пока нет …