Sur cette page

QAbstractListModel Class

La classe QAbstractListModel fournit un modèle abstrait qui peut être sous-classé pour créer des modèles de liste unidimensionnels. Plus d'informations...

En-tête : #include <QAbstractListModel>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite : QAbstractItemModel
Inherited By :

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. Elle n'est pas utilisée directement, mais doit être sous-classée.

Étant donné que le modèle fournit une interface plus spécialisée que QAbstractItemModel, il n'est pas adapté à une utilisation avec des vues arborescentes ; vous devrez sous-classer QAbstractItemModel si vous souhaitez fournir un modèle à cette fin. Si vous devez utiliser un certain nombre de modèles de liste pour gérer des données, il peut être plus approprié de sous-classer 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 mettre en œuvre 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 les éléments de la liste.

Étant donné que le modèle représente une structure unidimensionnelle, la fonction rowCount() renvoie le nombre total d'éléments dans le modèle. La fonction columnCount() est mise en œuvre pour assurer l'interopérabilité avec tous les types de vues, mais elle informe par défaut les vues que le modèle ne contient qu'une seule colonne.

Sous-classement

Lorsque vous sous-classez QAbstractListModel, vous devez fournir des implémentations des fonctions rowCount() et data(). Les modèles qui se comportent bien fournissent également une implémentation de la fonction 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 remplacer.

Pour les modèles de listes 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 informe les vues qu'il n'y a qu'une seule colonne d'éléments dans ce modèle.

Les modèles qui fournissent des interfaces pour les structures de données de type liste redimensionnable peuvent fournir 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 et doit appeler endInsertRows() immédiatement après.
  • Une implémentation removeRows() doit appeler beginRemoveRows() avant que les lignes ne soient supprimées de la structure de données et doit appeler endRemoveRows() immédiatement après.

Note : Des lignes directrices générales pour la sous-classification des modèles sont disponibles dans la Référence pour la sous-classification des modèles.

Voir également Classes de modèles, Référence de sous-classement de modèles, QAbstractItemView, et QAbstractTableModel.

Documentation des fonctions membres

[explicit] QAbstractListModel::QAbstractListModel(QObject *parent = nullptr)

Construit un modèle de liste abstraite avec la valeur donnée parent.

[virtual noexcept] QAbstractListModel::~QAbstractListModel()

Détruit le modèle de liste abstraite.

[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émente : QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

Renvoie l'index des données dans row et column avec parent.

Voir également 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.