0
QSqlQueryModelの結果を表示するためにQTableViewを使用しています。 DBのデータは永久に変更されるので、毎回同じスクリプトを実行し、更新されたデータを取得する必要があります。クエリは別のスレッドで実行され、その結果がメインスレッドに返されます。QSqlQueryModelとQSortFilterProxyModelを使用してQTableViewが正しく更新されない
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を使用して並べ替えを導入しようとしたときに問題が発生しました。私がそれをして以来、私のテーブルは更新されたデータを受け取っていません。 DBMSで同じスクリプトを実行しているときに、QSqlQueryModelが更新されたデータを受け取らないことを確認しました。新しい結果が得られます。 QSortFilterProxyModelを使用しない場合、テーブルは正常に更新されます。