このページでは

QModelIndex Class

QModelIndex クラスは、データモデル内のデータを特定するために使用されます。詳細...

ヘッダー: #include <QModelIndex>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

QModelIndex の比較

カテゴリ比較可能な型
strongQModelIndex

パブリック関数

QModelIndex()
int column() const
const void *constInternalPointer() const
QVariant data(int role = Qt::DisplayRole) const
Qt::ItemFlags flags() const
quintptr internalId() const
void *internalPointer() const
bool isValid() const
const QAbstractItemModel *model() const
(since 6.0) void multiData(QModelRoleDataSpan roleDataSpan) const
QModelIndex parent() const
int row() const
QModelIndex sibling(int row, int column) const
QModelIndex siblingAtColumn(int column) const
QModelIndex siblingAtRow(int row) const
QModelIndexList
bool operator!=(const QModelIndex &lhs, const QModelIndex &rhs)
bool operator<(const QModelIndex &lhs, const QModelIndex &rhs)
bool operator==(const QModelIndex &lhs, const QModelIndex &rhs)

詳細な説明

このクラスは、QAbstractItemModel から派生したアイテムモデルへのインデックスとして使用されます。このインデックスは、アイテムビュー、デリゲート、および選択モデルによって、モデル内のアイテムを特定するために使用されます。

新しい QModelIndex オブジェクトは、モデルがQAbstractItemModel::createIndex() 関数を使用して作成します。無効なモデルインデックスは、QModelIndex のコンストラクタを使用して構築できます。無効なインデックスは、モデル内の最上位アイテムを参照する際の親インデックスとしてよく使用されます。

モデルインデックスはモデル内の項目を参照し、それらのモデル内での位置を特定するために必要なすべての情報を含んでいます。各インデックスは特定の行と列に位置し、親インデックスを持つ場合があります。この情報を取得するには、row()、column()、およびparent() を使用します。 モデル内の各最上位項目は、親インデックスを持たないモデルインデックスによって表されます。この場合、parent() は無効なモデルインデックスを返します。これは、QModelIndex() コンストラクタの引数なし形式で構築されたインデックスと同等です。

モデル内の既存の項目を参照するモデルインデックスを取得するには、必要な行と列の値、および親のモデルインデックスを指定してQAbstractItemModel::index() を呼び出します。モデル内の最上位項目を参照する場合は、親インデックスとして QModelIndex() を指定してください。

model() 関数は、そのインデックスが参照するモデルを `QAbstractItemModel` として返します。`child()` 関数は、モデル内のそのインデックスの下に保持されている項目を調べるために使用されます。sibling() 関数を使用すると、インデックスと同じレベルにあるモデル内の項目を順巡回することができます。

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

関連項目: 『Model/Viewプログラミング』、『QPersistentModelIndex 』、および『QAbstractItemModel 』。

メンバ関数のドキュメント

[constexpr noexcept] QModelIndex::QModelIndex()

新しい空のモデルインデックスを作成します。このタイプのモデルインデックスは、モデル内のその位置が無効であることを示すために使用されます。

isValid() およびQAbstractItemModelも参照してください 。

[constexpr noexcept] int QModelIndex::column() const

このモデルインデックスが参照する列を返します。

[noexcept] const void *QModelIndex::constInternalPointer() const

モデルがインデックスを内部データ構造に関連付けるために使用する、const void * ポインタを返します。

QAbstractItemModel::createIndex()も参照してください 。

QVariant QModelIndex::data(int role = Qt::DisplayRole) const

指定されたrole の、インデックスが指す項目のデータを返します。なお、このモデルインデックスがinvalid である場合は、デフォルト構築されたQVariant を返します。

Qt::ItemFlags QModelIndex::flags() const

インデックスで指定された項目のフラグを返します。

[constexpr noexcept] quintptr QModelIndex::internalId() const

モデルがインデックスを内部データ構造に関連付けるために使用するquintptr を返します。

QAbstractItemModel::createIndex()も参照してください 。

[noexcept] void *QModelIndex::internalPointer() const

モデルがインデックスを内部データ構造に関連付けるために使用する、void * ポインタを返します。

QAbstractItemModel::createIndex()も参照してください 。

[constexpr noexcept] bool QModelIndex::isValid() const

このモデルインデックスが有効な場合は `true ` を返し、そうでない場合は `false` を返します。

有効なインデックスはモデルに属し、行番号と列番号が非負である。

model()、row()、およびcolumn()も参照してください 。

[constexpr noexcept] const QAbstractItemModel *QModelIndex::model() const

このインデックスが指すアイテムを含むモデルへのポインタを返します。

モデルの非const関数を呼び出すと、モデルインデックスが無効になり、アプリケーションがクラッシュする可能性があるため、モデルへのconstポインタが返されます。

[since 6.0] void QModelIndex::multiData(QModelRoleDataSpan roleDataSpan) const

インデックスで指定された項目に対して、指定されたroleDataSpan に値を設定します。

この関数は Qt 6.0 で導入されました。

QModelIndex QModelIndex::parent() const

モデルインデックスの親を返します。親がない場合は、QModelIndex() を返します。

sibling() およびmodel()も参照してください 。

[constexpr noexcept] int QModelIndex::row() const

このモデルインデックスが指す行を返します。

QModelIndex QModelIndex::sibling(int row, int column) const

row およびcolumn にある兄弟要素を返します。この位置に兄弟要素が存在しない場合は、無効なQModelIndex が返されます。

parent()、siblingAtColumn()、およびsiblingAtRow()も参照してください 。

QModelIndex QModelIndex::siblingAtColumn(int column) const

現在の行のcolumn にある兄弟要素を返します。この位置に兄弟要素がない場合は、無効なQModelIndex が返されます。

sibling() およびsiblingAtRow()も参照してください 。

QModelIndex QModelIndex::siblingAtRow(int row) const

現在の列のrow にある兄弟要素を返します。この位置に兄弟要素が存在しない場合は、無効なQModelIndex が返されます。

sibling() およびsiblingAtColumn()も参照してください 。

関連する非メンバー関数

QModelIndexList

QList<QModelIndex> の同義語。

[constexpr noexcept] bool operator!=(const QModelIndex &lhs, const QModelIndex &rhs)

lhs のモデルインデックスが、rhs のモデルインデックスと同じ場所を指していない場合、true を返します。それ以外の場合は、false を返します。

[constexpr noexcept] bool operator<(const QModelIndex &lhs, const QModelIndex &rhs)

lhs モデルのインデックスがrhs モデルのインデックスよりも小さい場合はtrue を返し、そうでない場合はfalse を返します。

「より小さい」という計算は、開発者にとって直接的な有用性はありません。親が異なるインデックスの比較方法は定義されていないためです。この演算子は、クラスをQMap と併用できるようにするためにのみ存在します。

[constexpr noexcept] bool operator==(const QModelIndex &lhs, const QModelIndex &rhs)

lhs のモデルインデックスがrhs のモデルインデックスと同じ位置を指している場合はtrue を返し、そうでない場合はfalse を返します。

別のモデルインデックスと比較する際には、内部データポインタ、行、列、およびモデルの値が使用されます。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.