QAbstractListModel Class
La classe `QAbstractListModel` fournit un modèle abstrait pouvant être sous-classé pour créer des modèles de liste unidimensionnels. En savoir plus...
| En-tête : | #include <QAbstractListModel> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite de : | QAbstractItemModel |
| Hérité par : | QPdfLinkModel, QPdfSearchModel, QStringListModel, QVirtualKeyboardSelectionListModel, et QWebEngineHistoryModel |
Fonctions publiques
| QAbstractListModel(QObject *parent = nullptr) | |
| virtual | ~QAbstractListModel() |
Fonctions publiques réimplémentées
| virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
| virtual QModelIndex | index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Description détaillée
QAbstractListModel fournit une interface standard pour les modèles qui représentent leurs données sous la forme d’une simple séquence non hiérarchique d’éléments. Il n’est pas utilisé directement, mais doit être sous-classé.
Comme ce modèle fournit une interface plus spécialisée que celle de ` QAbstractItemModel`, il n'est pas adapté à une utilisation avec des arborescences ; vous devrez créer une sous-classe de ` QAbstractItemModel ` si vous souhaitez fournir un modèle à cette fin. Si vous devez utiliser plusieurs modèles de liste pour gérer des données, il peut être plus approprié de créer une sous-classe de ` QAbstractTableModel `.
Des modèles simples peuvent être créés en sous-classant cette classe et en implémentant le nombre minimum de fonctions requises. Par exemple, nous pourrions implémenter un modèle simple en lecture seule basé sur QStringList qui fournit une liste de chaînes de caractères à un widget QListView. Dans ce cas, il suffit d’implémenter la fonction rowCount() pour renvoyer le nombre d’éléments de la liste, et la fonction data() pour récupérer des éléments de la liste.
Comme le modèle représente une structure unidimensionnelle, la fonction rowCount() renvoie le nombre total d’éléments du modèle. La fonction columnCount() est implémentée pour assurer l’interopérabilité avec tous les types de vues, mais elle indique par défaut aux vues que le modèle ne contient qu’une seule colonne.
Sous-classement
Lorsque vous créez une sous-classe de `QAbstractListModel`, vous devez fournir des implémentations des fonctions ` rowCount()` et ` data()`. Les modèles bien conçus fournissent également une implémentation de ` headerData()`.
Si votre modèle est utilisé dans QML et nécessite des rôles autres que ceux fournis par défaut par la fonction ` roleNames()`, vous devez la redéfinir.
Pour les modèles de liste modifiables, vous devez également fournir une implémentation de setData() et implémenter la fonction flags() de manière à ce qu’elle renvoie une valeur contenant Qt::ItemIsEditable.
Notez que QAbstractListModel fournit une implémentation par défaut de columnCount() qui indique aux vues qu’il n’y a qu’une seule colonne d’éléments dans ce modèle.
Les modèles fournissant des interfaces vers des structures de données de type liste redimensionnables peuvent proposer des implémentations de insertRows() et removeRows(). Lors de l’implémentation de ces fonctions, il est important d’appeler les fonctions appropriées afin que toutes les vues connectées soient informées de tout changement :
- Une implémentation de ` insertRows()` doit appeler ` beginInsertRows()` avant d’insérer de nouvelles lignes dans la structure de données, puis appeler ` endInsertRows()` immédiatement après.
- Une implémentation de ` removeRows()` doit appeler ` beginRemoveRows()` avant que les lignes ne soient supprimées de la structure de données, puis ` endRemoveRows()` immédiatement après.
Remarque : certaines directives générales concernant la création de sous-classes de modèles sont disponibles dans la référence sur la création de sous-classes de modèles.
Voir également Classes de modèles, Référence sur la sous-classification des modèles, QAbstractItemView, QAbstractTableModel et QRangeModel.
Documentation sur les fonctions membres
[explicit] QAbstractListModel::QAbstractListModel(QObject *parent = nullptr)
Crée un modèle de liste abstrait à partir de l'parent on fournie.
[virtual noexcept] QAbstractListModel::~QAbstractListModel()
Supprime le modèle de liste abstrait.
[override virtual] bool QAbstractListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Réimplémente : QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[override virtual] Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
Réimplémente : QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual] QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const
Réimplémentation de : QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
Renvoie l'index des données dans row et column avec parent.
Voir aussi parent().
[override virtual] QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const
Réimplémente : QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
© 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.