2

現在、それぞれのソート順と行選択を失うQStandardItemModel ことなく、行項目を更新したいと考えていますQTableView

私は2つのアプローチをテストしました:

  1. モデルをクリアしclear()て行を再度追加すると、ヘッダーを含むすべてが「破棄」されます。
  2. すべての行を削除して再度追加すると、ヘッダーは保持されますが、選択と並べ替え順序は「破棄」されます。

手動で a) 不要になったすべての行を削除してから、b) 変更された行の項目を更新することができます。しかし、もっと簡単な方法はありませんか?

4

2 に答える 2

4

更新前にデータをどのように並べ替えたかはわかりませんが、QTableViewのsortByColumn()関数を確認してください。

選択に関しては、それでも消え続ける場合は、手動で選択を元に戻すことができます。

// You access the selected index when the editing starts
QModelIndex index = table->selectionModel()->currentIndex();

//Later when you finished editing, you can select it again
table->selectionModel()->select(index, QItemSelectionModel::Select);

これについての詳細:

于 2012-08-06T10:28:16.963 に答える
1

不要になった行を削除して新しい行を追加するか、クリアする前にソート順と選択された項目を手動で覚えておくことができます。つまり、一意の ID を割り当て (そのためのカスタム ロールで setData() を使用できます)、選択したアイテムからクリアする前にそれを取得し、アイテムを再作成した後に選択を再適用します。

于 2012-08-06T11:57:53.963 に答える