QModelIndex Class
La classe `QModelIndex` sert à localiser des données dans un modèle de données. En savoir plus...
| En-tête : | #include <QModelIndex> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Comparaisons QModelIndex
| Catégorie | Types comparables |
|---|---|
| strong | QModelIndex |
Fonctions publiques
| 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 |
Éléments non membres associés
| 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) |
Description détaillée
Cette classe sert d’index pour les modèles d’éléments dérivés de ` QAbstractItemModel`. L’index est utilisé par les vues d’éléments, les délégués et les modèles de sélection pour localiser un élément dans le modèle.
De nouveaux objets QModelIndex sont créés par le modèle à l’aide de la fonction QAbstractItemModel::createIndex(). Un index de modèle non valide peut être construit à l’aide du constructeur de QModelIndex. Les index non valides sont souvent utilisés comme index parents lorsqu’on fait référence à des éléments de niveau supérieur dans un modèle.
Les index de modèle font référence à des éléments dans les modèles et contiennent toutes les informations nécessaires pour spécifier leur emplacement dans ces modèles. Chaque index se trouve dans une ligne et une colonne données et peut avoir un index parent ; utilisez row(), column() et parent() pour obtenir ces informations. Chaque élément de niveau supérieur d’un modèle est représenté par un index de modèle qui n’a pas d’index parent — dans ce cas, la fonction parent() renverra un index de modèle invalide, équivalent à un index construit avec la forme à zéro argument du constructeur QModelIndex().
Pour obtenir un index de modèle faisant référence à un élément existant dans un modèle, appelez ` QAbstractItemModel::index()` en lui fournissant les valeurs de ligne et de colonne requises, ainsi que l’index de modèle du parent. Lorsque vous faites référence à des éléments de niveau supérieur dans un modèle, indiquez `QModelIndex()` comme index parent.
La fonction ` model()` renvoie le modèle auquel l’index fait référence sous la forme d’un ` QAbstractItemModel`. La fonction `child()` est utilisée pour examiner les éléments contenus sous l’index dans le modèle. La fonction ` sibling()` permet de parcourir les éléments du modèle situés au même niveau que l’index.
Remarque : les indexde modèle doivent être utilisés immédiatement, puis supprimés. Vous ne devez pas compter sur la validité des index après l’appel de fonctions de modèle qui modifient la structure du modèle ou suppriment des éléments. Si vous devez conserver un index de modèle dans le temps, utilisez un QPersistentModelIndex.
Voir également Programmation modèle/vue, QPersistentModelIndex et QAbstractItemModel.
Documentation sur les fonctions membres
[constexpr noexcept] QModelIndex::QModelIndex()
Crée un nouvel index de modèle vide. Ce type d'index de modèle sert à indiquer qu'une position dans le modèle n'est pas valide.
Voir également isValid() et QAbstractItemModel.
[constexpr noexcept] int QModelIndex::column() const
Renvoie la colonne à laquelle cet index du modèle fait référence.
[noexcept] const void *QModelIndex::constInternalPointer() const
Renvoie un pointeur de type const void * utilisé par le modèle pour associer l'index à la structure de données interne.
Voir aussi QAbstractItemModel::createIndex().
QVariant QModelIndex::data(int role = Qt::DisplayRole) const
Renvoie les données de l'role spécifié pour l'élément référencé par l'index, ou une instance d'QVariant, construite par défaut, si cet index de modèle est de type « invalid ».
Qt::ItemFlags QModelIndex::flags() const
Renvoie les indicateurs associés à l'élément désigné par l'index.
[constexpr noexcept] quintptr QModelIndex::internalId() const
Renvoie un objet ` quintptr ` utilisé par le modèle pour associer l'index à la structure de données interne.
Voir aussi QAbstractItemModel::createIndex().
[noexcept] void *QModelIndex::internalPointer() const
Renvoie un pointeur de type void * utilisé par le modèle pour associer l'index à la structure de données interne.
Voir aussi QAbstractItemModel::createIndex().
[constexpr noexcept] bool QModelIndex::isValid() const
Renvoie « true » si cet index de modèle est valide ; sinon, renvoie « false ».
Un index valide appartient à un modèle et comporte des numéros de ligne et de colonne non négatifs.
Voir également model(), row() et column().
[constexpr noexcept] const QAbstractItemModel *QModelIndex::model() const
Renvoie un pointeur vers le modèle contenant l'élément auquel cet index fait référence.
Un pointeur const vers le modèle est renvoyé, car les appels à des fonctions non const du modèle pourraient invalider l'index du modèle et éventuellement provoquer le plantage de votre application.
[since 6.0] void QModelIndex::multiData(QModelRoleDataSpan roleDataSpan) const
Remplit l'roleDataSpan on indiquée pour l'élément référencé par l'index.
Cette fonction a été introduite dans Qt 6.0.
QModelIndex QModelIndex::parent() const
Renvoie le parent de l'index du modèle, ou QModelIndex() s'il n'a pas de parent.
Voir également sibling() et model().
[constexpr noexcept] int QModelIndex::row() const
Renvoie la ligne à laquelle cet index du modèle fait référence.
QModelIndex QModelIndex::sibling(int row, int column) const
Renvoie le nœud frère situé à l'adresse row et column. S'il n'y a pas de nœud frère à cette position, une erreur « QModelIndex » est renvoyée.
Voir également parent(), siblingAtColumn() et siblingAtRow().
QModelIndex QModelIndex::siblingAtColumn(int column) const
Renvoie l'élément frère situé à l'adresse column pour la ligne actuelle. S'il n'y a pas d'élément frère à cette position, une exception QModelIndex est levée.
Voir également sibling() et siblingAtRow().
QModelIndex QModelIndex::siblingAtRow(int row) const
Renvoie l'élément « sibling » situé à l'adresse row pour la colonne actuelle. S'il n'y a pas d'élément « sibling » à cette position, une erreur « QModelIndex » est renvoyée.
Voir également sibling() et siblingAtColumn().
Éléments non membres associés
QModelIndexList
Synonyme de QList<QModelIndex>.
[constexpr noexcept] bool operator!=(const QModelIndex &lhs, const QModelIndex &rhs)
Renvoie « true » si l'index du modèle lhs ne correspond pas à celui du modèle rhs; sinon, renvoie « false ».
[constexpr noexcept] bool operator<(const QModelIndex &lhs, const QModelIndex &rhs)
Renvoie « true » si l'index du modèle « lhs » est inférieur à celui du modèle « rhs » ; sinon, renvoie « false ».
Le calcul de la condition « inférieur à » n’est pas directement utile aux développeurs : la manière dont les index ayant des parents différents sont comparés n’est pas définie. Cet opérateur n’existe que pour permettre à la classe d’être utilisée avec QMap.
[constexpr noexcept] bool operator==(const QModelIndex &lhs, const QModelIndex &rhs)
Renvoie « true » si l'index du modèle lhs fait référence au même emplacement que l'index du modèle rhs; sinon, renvoie « false ».
Le pointeur de données interne, ainsi que les valeurs de ligne, de colonne et de modèle, sont utilisés lors de la comparaison avec un autre index de modèle.
© 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.