2016-11-19 20 views
0

私は例を調べますhttp://doc.qt.io/Qt-5/qtsql-querymodel-editablesqlmodel-cpp.html 問合せUPDATE文の後にモデルが表示されていない(ビューは空です)と、SELECT文をコールした後にデータを表示する理由は1つありますか? 私はそう思います。SELECTを実行していないので、モデルを変更する必要はありません。qtsql-querymodel-editablesqlmodel:なぜリフレッシュする必要がありますか?

答えて

0

モデルはSELECTクエリの結果を直接表示しているため、クエリ時にデータベースの状態が表示されます。

データベースを更新するコードは、モデルの内部データ(前のSELECTクエリのキャッシュ結果)に直接影響しない操作を使用するため、ビューに関する限り変更はありません。

SELECTクエリーを再びrefresh()に適用すると、そのデータベースの状態に関するモデルの知識が更新され、新しいデータが表示されます。

「クリア」はclear()へのコールがsetData()にあるために発生します。 なぜそれがあるのか​​分かりませんが、私はそれが必要ではないと思います。

+0

変更されたデータを表示するにはクリアが必要ですと思います。しかし、私はそれに関係する新しい質問があります。変更されたアイテムが大きなテーブルの最後で、スクロールダウンして表示された場合、リフレッシュ後、リストビューはスクロール位置を失い、ユーザーは変更された値を表示する必要がありますが、listviewは最初のレコードを表示します。 –

+0

Listview.scrolltoitemを使う必要があると思います。 –

+0

はい、手動でスクロールするか、代わりに、リセットするのではなく更新する独自のモデルを実装してください。 –

関連する問題