-1

カスタム モデルをアタッチした QTreeView があります。

私のコードでは、次のことを行います。

treeView->setModel(modelPtr)

...

...

...

treeView->setModel(modelPtr)

setModel()2 回目の呼び出しの後、モデル インデックスは への 1 回目の呼び出し後と同じままであると信頼できますsetModel()か?

彼らは信頼できず、変わる可能性があるとどこかで読みました。

a) この理解が正しいか確認してください。

このフォーラムの専門家に、モデル インデックスが無効になる可能性がある場合に関連するその他の重要な情報を確認して追加するよう依頼してください。

b) ツリー ビューをモデルに添付したとします。

_dtreeView->setModel(modelPtr)

次に、プロキシ モデルにアタッチします。

_dtreeView->setModel(_proxyModelPtr)

modelPtrビューをプロキシモデルに設定した後でも、によって表されるモデル内のアイテムのモデルインデックスは同じままですか?

ビューがプロキシモデルに変更されたので同じままだと思いますが、実際のモデルは変更されていません。

専門家に確認を依頼してください。

4

1 に答える 1

1

を保存するのは安全ではありませんQModelIndex。ドキュメントには次のように記載されています。

注: モデル インデックスはすぐに使用してから破棄する必要があります。モデルの構造を変更したりアイテムを削除したりするモデル関数を呼び出した後、インデックスが有効なままであることに依存しないでください。モデル インデックスを長期間保持する必要がある場合は、QPersistentModelIndex を使用します。

QModelIndexQPersistentModelIndexを参照してください。

収納できQPersistentModelIndexます。モデルが有効なまま (削除されていない)QPersistentModelIndexであれば、ビューのモデルを変更しても信頼できます。インデックスはモデルに関連し、ビューには依存しません (同じモデルをより多くのビューに表示できます)。

于 2016-03-18T16:10:38.557 に答える