0
我正在使用QTableView爲了顯示QSqlQueryModel的結果。數據庫中的數據會永久更改,因此我每次都運行相同的腳本並需要獲取更新的數據。該查詢在另一個線程中執行,然後將結果返回給主線程。QTableView未正確更新使用QSqlQueryModel和QSortFilterProxyModel
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沒有收到任何更新的數據,而在DBMS中運行相同的腳本給了我新的結果。 如果我不使用QSortFilterProxyModel,表格會正常更新。