なんらかの (まあ、パフォーマンス上の) 理由で、Qt の「モデル」クラスはデータベースから 256 行しかフェッチしないため、行をレコードセットの最後に追加したい場合は、どうやら、次の行に沿って何かを行う必要があります。
while (model->canFetchMore()) {
model->fetchMore();
}
これは機能し、後で行うmodel->insertRow(model->rowCount())
と、実際には、レコードセットの最後の行の後に行が追加されます。
この動作に関連する他のさまざまな問題があります。たとえば、モデルに行を挿入または削除すると、それをレンダリングするビューが再描画されて 256 行しか表示されず、欠落している行が再度フェッチされることを手動で確認する必要があります。
この動作を完全にバイパスする方法はありますか? 私のモデルは、たとえば 1000 行以上を表示する可能性はほとんどありませんが、それらの 1000 行を取得するのは王様の苦痛のようです。大規模なレコードセットを処理する必要がある場合、これは優れたパフォーマンスの最適化であることは理解していますが、私にとってはメリットではなく負担です。
モデルは書き込み可能である必要があるため、QSqlRelationalTableModel の代わりに QSqlQueryModel を単純に使用することはできません。