QAbstractItemModelTester Class
La classe `QAbstractItemModelTester` permet de tester les sous-classes de ` QAbstractItemModel `. En savoir plus...
| En-tête : | #include <QAbstractItemModelTester> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Test) target_link_libraries(mytarget PRIVATE Qt6::Test) |
| qmake : | QT += testlib |
| Hérite de : | QObject |
Types publics
| enum class | FailureReportingMode { QtTest, Warning, Fatal } |
Fonctions publiques
| QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr) | |
| QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr) | |
| QAbstractItemModelTester::FailureReportingMode | failureReportingMode() const |
| QAbstractItemModel * | model() const |
(since 6.4) void | setUseFetchMore(bool value) |
Description détaillée
La classe QAbstractItemModelTester est une classe utilitaire permettant de tester les modèles d’éléments.
Lors de l'implémentation d'un modèle d'élément (c'est-à-dire d'une sous-classe concrète de ` QAbstractItemModel `), il est nécessaire de respecter un ensemble de règles très strictes garantissant la cohérence pour les utilisateurs du modèle (vues, modèles proxy, etc.).
Par exemple, pour un index donné, la réimplémentation par un modèle de la méthode ` hasChildren()` doit être cohérente avec les valeurs renvoyées par ` rowCount()` et ` columnCount()`.
QAbstractItemModelTester permet de détecter les erreurs les plus courantes dans les classes de modèles d’éléments personnalisés. En effectuant une série de tests, il tente de vérifier que l’état du modèle reste cohérent à tout moment. Les tests sont répétés automatiquement à chaque modification du modèle.
QAbstractItemModelTester utilise des tests non destructifs, qui consistent généralement à lire les données et les métadonnées d’un modèle d’élément donné. QAbstractItemModelTester tentera également d’effectuer des modifications illégales du modèle. Dans les modèles correctement implémentés, ces tentatives devraient être rejetées et aucune donnée ne devrait être modifiée en conséquence.
Utilisation
L’utilisation de `QAbstractItemModelTester` est simple. Dans un cas de test, il suffit de créer une instance en passant le modèle à tester au constructeur :
MyModel *modelToBeTested = ...;
auto tester = new QAbstractItemModelTester(modelToBeTested);QAbstractItemModelTester signalera les échecs de test via les mécanismes de journalisation d’ Qt Test.
Il est également possible d’utiliser QAbstractItemModelTester en dehors d’un cas de test. Par exemple, cela peut s’avérer utile pour tester un modèle d’élément utilisé par une application sans avoir à créer un test unitaire explicite pour ce modèle (ce qui pourrait s’avérer complexe). Pour utiliser QAbstractItemModelTester en dehors d’un cas de test, transmettez l’un des énumérateurs de la catégorie « QAbstractItemModelTester::FailureReportingMode » à son constructeur, précisant ainsi comment les échecs doivent être consignés.
QAbstractItemModelTester peut également signaler des informations de débogage supplémentaires sous forme de messages de journalisation dans la catégorie « qt.modeltest ». Cette journalisation de débogage est désactivée par défaut ; consultez la documentation d’ QLoggingCategory pour savoir comment l’activer.
Remarque : bien que QAbstractItemModelTester constitue une aide précieuse pour le développement et le test de modèles d’éléments personnalisés, il ne détecte pas (et ne peut pas détecter) tous les problèmes possibles dans les sous-classes de QAbstractItemModel. Notamment, il n’effectuera jamais de tests destructifs significatifs sur un modèle, qui doit donc être testé séparément.
Voir également Programmation modèle/vue et QAbstractItemModel.
Documentation sur les types de membres
enum class QAbstractItemModelTester::FailureReportingMode
Cette énumération définit la manière dont la classe ` QAbstractItemModelTester ` doit signaler un échec lorsqu’elle teste une sous-classe de ` QAbstractItemModel `.
| Constante | Valeur | Description |
|---|---|---|
QAbstractItemModelTester::FailureReportingMode::QtTest | 0 | Les échecs seront signalés comme des échecs de test d’ QtTest. |
QAbstractItemModelTester::FailureReportingMode::Warning | 1 | Les échecs seront signalés sous forme de messages d'avertissement dans la catégorie de journalisation « qt.modeltest ». |
QAbstractItemModelTester::FailureReportingMode::Fatal | 2 | Un échec entraînera l'arrêt immédiat et anormal du programme. La raison de l'échec sera signalée à l'aide de la fonction qFatal(). |
Documentation des fonctions membres
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
Crée une instance de testeur de modèle, avec l'parent fournie, qui testera le modèle model.
Le mode de signalement des échecs est défini sur FailureReportingMode::QtTest.
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
Crée une instance de testeur de modèle, avec l'parent fournie, qui testera le modèle model, en utilisant le mode spécifié pour signaler les échecs de test.
Voir également QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const
Renvoie le mode utilisé par cette instance pour signaler les échecs de test.
Voir également QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModel *QAbstractItemModelTester::model() const
Renvoie le modèle que cette instance est en train de tester.
[since 6.4] void QAbstractItemModelTester::setUseFetchMore(bool value)
Si la valeur de ` value ` est `true`, cela active le remplissage dynamique du modèle testé ; c'est le comportement par défaut. Si la valeur de ` value ` est `false`, cela désactive cette fonctionnalité.
Cette fonction a été introduite dans Qt 6.4.
Voir également QAbstractItemModel::fetchMore().
© 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.