Я показываю 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. Не за что. Он не предоставляет никаких аналитических процедур для вас. Это не цель этого класса. Если вам нужен анализ данных в модели, вы должны написать это самостоятельно.