QPersistentModelIndexes
通常の とは異なり、参照される項目がモデル内に移動されると自動的に更新される項目への (行、列、親) 参照QModelIndex
です。
たとえば、1 行を挿入すると、挿入ポイントの下にあるすべての既存の永続インデックスのrow
プロパティが 1 ずつ増加します。
それらを直接使用することはできませんがQTreeView
、たとえば、展開されたアイテムと選択されたアイテムを追跡するために使用します。
これらの永続的なインデックスを更新するには、新しいレコードを追加するときに、関数を呼び出して実際の行挿入を行う必要がありますQAbstractitemModel::beginInsertRows()
。endInsertRows()
詳細については、モデル クラスのサブクラス化に関するセクションの最後を参照してください: http://doc.trolltech.com/latest/qabstractitemmodel.html#subclassing
このメソッドを見つけたのでQAbstractItemModel::persistentIndexList
、どのインデックスを返す必要があるのか 疑問に思っています。それらのすべて?
このメソッドは、現在 TreeView に表示されているすべてのノードを返す必要がありますか?
このメソッドは、QPersistentIndexModel
が作成され、まだスコープ内にあるインデックスのみを返します (ローカル変数、クラス メンバーとして、またはQList<QPersistentIndexModel>
たとえば a 内で)。
展開または選択されたノードは必ずしも現在表示されているとは限りません。そのため、これらの永続的なインデックスが何に使用されているかについて何も推測することはできません (とにかくすべきではありません)。
persistentIndexList
それらを最新の状態に保つ必要があり、ソートなどのモデルの大きな変更にのみ使用する必要があります(QTreeWidget
内部モデルを参照してください:(QTreeModel::ensureSorted
リンク))。小さな増分変更には、すべてのbeginXxxRows/beginXxxColumns
およびendXxxRows/endXxxColumns
メソッドがあります。