QAbstractTableModel Class
La classe QAbstractTableModel fournit un modèle abstrait qui peut être sous-classé pour créer des modèles de table. Plus d'informations...
| En-tête : | #include <QAbstractTableModel> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite : | QAbstractItemModel |
| Hérité par : |
Fonctions publiques
| QAbstractTableModel(QObject *parent = nullptr) | |
| virtual | ~QAbstractTableModel() |
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, const QModelIndex &parent = QModelIndex()) const override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Description détaillée
QAbstractTableModel fournit une interface standard pour les modèles qui représentent leurs données sous la forme d'un tableau bidimensionnel 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 ne convient pas aux vues arborescentes, bien qu'il puisse être utilisé pour fournir des données à QListView. Si vous devez représenter une simple liste d'éléments et que vous n'avez besoin que d'un modèle contenant une seule colonne de données, il peut être plus approprié de sous-classer QAbstractListModel.
Les fonctions rowCount() et columnCount() renvoient les dimensions du tableau. Pour récupérer un index de modèle correspondant à un élément du modèle, utilisez index() et fournissez uniquement les numéros de ligne et de colonne.
Sous-classement
Lorsque vous sous-classez QAbstractTableModel, vous devez implémenter les fonctions rowCount(), columnCount() et data(). Les implémentations par défaut des fonctions index() et parent() sont fournies par QAbstractTableModel. Les modèles qui se comportent bien implémenteront également headerData().
Les modèles modifiables doivent implémenter setData() et flags() pour renvoyer une valeur contenant Qt::ItemIsEditable.
Les modèles qui fournissent des interfaces pour les structures de données redimensionnables peuvent fournir des implémentations de insertRows(), removeRows(), insertColumns() et removeColumns(). 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 insertColumns() doit appeler beginInsertColumns() avant d' insérer de nouvelles colonnes dans la structure de données et doit appeler endInsertColumns() 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.
- Une implémentation de removeColumns() doit appeler beginRemoveColumns() avant que les colonnes ne soient supprimées de la structure de données, et doit appeler endRemoveColumns() immédiatement après.
Remarque : des lignes directrices générales concernant la sous-classification des modèles sont disponibles dans le document Model Subclassing Reference (Référence pour la sous-classification des modèles).
Sécurité des threads
Étant une sous-classe de QObject, QAbstractTableModel n'est pas thread-safe. Toute API liée au modèle QAbstractTableModel ne doit être appelée qu'à partir du thread dans lequel vit l'objet du modèle. Si QAbstractTableModel est connecté à une vue, il opère sur le thread de l'interface graphique, car la vue y réside et interagit avec le modèle à partir de ce thread. Bien qu'un thread d'arrière-plan puisse être utilisé pour remplir ou modifier le contenu du modèle, il doit le faire avec précaution, car il ne peut appeler directement aucune API liée au modèle. Au lieu de cela, vous devez mettre les mises à jour en file d'attente et les appliquer dans le fil d'exécution principal. Cela peut se faire à l'aide de connexions en file d'attente.
Voir aussi Classes de modèles, QAbstractItemModel, et QAbstractListModel.
Documentation des fonctions membres
[explicit] QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)
Construit un modèle de table abstraite pour le site parent donné.
[virtual noexcept] QAbstractTableModel::~QAbstractTableModel()
Détruit le modèle de table abstraite.
[override virtual] bool QAbstractTableModel::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 QAbstractTableModel::flags(const QModelIndex &index) const
Réimplémente : QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual] QModelIndex QAbstractTableModel::index(int row, int column, 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 QAbstractTableModel::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.