行の動きが装飾されているソースモデルがあるとします
beginMoveRows()
endMoveRows()
(したがって、 を出力しlayoutChanged()
ます)。
次に、ソース モデルの行をフィルター処理するように設定されたQSortFilterProxyModelインスタンスがあります。ソースからわかるように、ソース モデルのレイアウトの変更は、プロキシ モデルのそれぞれの再調整につながります (layoutChanged()
シグナルをリッスンし、適切に調整するため)。
しかし、ドキュメントは次のようにしか言いません:
注: デフォルトでは、元のモデルが変更されるたびに、モデルはデータを動的に再ソートおよび再フィルタリングしません。この動作は、dynamicSortFilter プロパティを設定することで変更できます。
dynamicSortFilter : bool このプロパティは、ソース モデルの内容が変更されるたびに、プロキシ モデルが動的に並べ替えおよびフィルター処理されるかどうかを保持します。
私の質問:
- (1)「元のモデルが変更されるたび」には、「行が元のモデル内で移動されたとき」が含まれますか
- (2) その場合、プロキシ モデル内のアイテムの順序は、ソース モデルと同じであることが保証されています。
- (3)開発中に上記の動作に依存した経験のある人はいますか?
- (4) [追加の質問] QSortFilterProxyModel サブクラス内でソース モデルの行(AboutToBe)Moved シグナルを追跡し、そこで beginMoveRows/endMoveRows を呼び出すと (適切にマッピングされた行インデックスを使用して)、プロキシが台無しになるということは正しいですか? beginMoveRows/endMoveRows 呼び出しは、onLayoutChanged ソース モデルのシグナルを処理するときに QSortFilterProxyModel によって既に調整された永続的なインデックスを調整しようとしますか?
ありがとう。