Я использую QTableView для отображения результатов QSqlQueryModel.Данные в БД постоянно меняются, поэтому я каждый раз запускаю один и тот же скрипт и мне нужно получать обновленные данные.Запрос выполняется в другом потоке, после чего он возвращает результат в основной поток.
void SqlThread::setNewScript(QString script)
{
QSqlQueryModel * sqlModel = new QSqlQueryModel();
this->script = script;
QSqlQuery query = QSqlQuery(this->script, db);
sqlModel->setQuery(query);
emit queryFinished(sqlModel);
}
void myTable::onQueryFinished(QSqlQueryModel * model)
{
QAbstractItemModel * oldModel = this->table->model();
QSortFilterProxyModel * sort = new QSortFilterProxyModel();
sort->setSourceModel(model);
this->table->setModel(sort);
delete oldModel;
}
Проблема возникла, когда я попытался ввести сортировку с использованием QSortFilterProxyModel.С тех пор, как я это сделал, моя таблица не получила обновленных данных.Я проверил, что QSqlQueryModel не получает обновленных данных, хотя выполнение того же скрипта в СУБД дает мне новые результаты.Если я не использую QSortFilterProxyModel, таблица обновляется нормально.