QModelIndex Class

3342 ワード

Header:#include qmake:QT+=core//コンストラクタ
QModeIndex()

The QModelIndex class is used to locate data in a data model. このクラスはQAbstractItemModelによって派生されたモデル(item models)のインデックスに用いられる.このインデックスはitem views,delegates,selection modelsで使用でき,このインデックスでモデルのどこにアイテム(item)を配置することができる.
モデルは、関数QAbstractItemModel::createIndex()によって新しいQModelIndexオブジェクトを作成することができる.QModelIndexコンストラクション関数を使用して無効なモデルインデックスを構築します.モデルでトップレベルのアイテム(top-level items)を参照する場合、通常は親インデックスとして無効なインデックスが使用されます.
モデルでは、対応するアイテム(item)を表すインデックスが使用され、各インデックスには対応するアイテムの位置を決定するすべての情報が含まれます.与えられたrowとcolumnによってインデックスを決定することができ、各インデックスには親インデックスが含まれる可能性がある.row(),column(),parent()のこれらの関数を使用して、対応する情報を取得します.モデル内の各トップレベルプロジェクト(top-level item)は、親インデックスがないため、parent()は無効なインデックスを返します.このインデックスは、無パラメトリック関数QModelIndex()で構築されたインデックスと等価です.
モデルに既に存在する項目のインデックスを取得するために、呼び出し関数QAbstractItemModel::index()は、行番号および列番号、および親インデックスを取得する.トップレベルのプロジェクトを参照する場合(top-level-item)、親インデックスとしてQModelIndex()を使用します.この無効なインデックスです.
インデックスがどのモデルを参照しているかを知っている場合は、関数model()でモデルタイプを返します.
const QAbstractItemModel *QModelIndex::model() const;

/*Returns a pointer to the model containing the item that this index refers to.
A const pointer to the model is returned because calls to non-const functions of the model might invalidate the model index and possibly crash your application.*/

項目に子供インデックスがあるかどうかを確認すると、chiled()関数が実装されます.
QTreeWidgetItem *QTreeWidgetItem::child(int index) const;
/*Returns the item at the given index in the list of the item's children.*/

同じインデックス・レベルのアイテムを巡回するには、sibling()関数を使用します.
QModelIndex QModelIndex::sibling(int row, int column) const;
/*Returns the sibling( ) at row and column. If there is no sibling at this position, an invalid QModelIndex is returned.*/

モデルインデックス(Model indexes)は、使い終わったらすぐに消去する必要があります.モデルの構造を変更したり、プロジェクトを削除したりするモデル関数を呼び出した後、インデックスを有効に保つべきではありません.モデルインデックスを一定期間使用する必要がある場合は、QPersistentModelIndexを使用します.