Auf dieser Seite

QAbstractItemModelTester Class

Die Klasse „QAbstractItemModelTester“ unterstützt das Testen von Unterklassen von „ QAbstractItemModel “. Mehr...

Header: #include <QAbstractItemModelTester>
CMake: find_package(Qt6 REQUIRED COMPONENTS Test)
target_link_libraries(mytarget PRIVATE Qt6::Test)
qmake: QT += testlib
Erbt von: QObject

Öffentliche Typen

enum class FailureReportingMode { QtTest, Warning, Fatal }

Öffentliche Funktionen

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)

Ausführliche Beschreibung

Die Klasse `QAbstractItemModelTester` ist eine Hilfsklasse zum Testen von Elementmodellen.

Bei der Implementierung eines Item-Modells (d. h. einer konkreten Unterklasse von ` QAbstractItemModel `) müssen sehr strenge Regeln eingehalten werden, die die Konsistenz für die Nutzer des Modells (Ansichten, Proxy-Modelle usw.) gewährleisten.

Beispielsweise muss bei einem bestimmten Index die Neuimplementierung von ` hasChildren()` durch ein Modell mit den Werten übereinstimmen, die von ` rowCount()` und ` columnCount()` zurückgegeben werden.

QAbstractItemModelTester hilft dabei, die häufigsten Fehler in benutzerdefinierten Elementmodellklassen zu erkennen. Durch die Durchführung einer Reihe von Tests versucht es zu überprüfen, ob der Modellstatus jederzeit konsistent ist. Die Tests werden bei jeder Änderung des Modells automatisch wiederholt.

QAbstractItemModelTester führt nicht-destruktive Tests durch, die in der Regel darin bestehen, Daten und Metadaten aus einem bestimmten Elementmodell auszulesen. QAbstractItemModelTester versucht zudem, unzulässige Änderungen am Modell vorzunehmen. In korrekt implementierten Modellen sollten solche Versuche zurückgewiesen werden, sodass keine Daten verändert werden.

Verwendung

Die Verwendung von QAbstractItemModelTester ist unkompliziert. In einem Testfall reicht es aus, eine Instanz zu erstellen und dabei das zu testende Modell an den Konstruktor zu übergeben:

MyModel *modelToBeTested = ...;
auto tester = new QAbstractItemModelTester(modelToBeTested);

QAbstractItemModelTester meldet Testfehler über die Protokollierungsmechanismen von „ Qt Test “.

Es ist auch möglich, QAbstractItemModelTester außerhalb eines Testfalls zu verwenden. So kann es beispielsweise sinnvoll sein, ein von einer Anwendung verwendetes Item-Modell zu testen, ohne einen expliziten Unit-Test für ein solches Modell erstellen zu müssen (was unter Umständen schwierig sein könnte). Um `QAbstractItemModelTester` außerhalb eines Testfalls zu verwenden, übergeben Sie einen der ` QAbstractItemModelTester::FailureReportingMode `-Enumeratoren an dessen Konstruktor und legen Sie so fest, wie Fehler protokolliert werden sollen.

QAbstractItemModelTester kann außerdem zusätzliche Debugging-Informationen als Protokollmeldungen unter der Protokollkategorie „ qt.modeltest “ ausgeben. Diese Debug-Protokollierung ist standardmäßig deaktiviert; Informationen zur Aktivierung finden Sie in der Dokumentation zu „ QLoggingCategory “.

Hinweis: QAbstractItemModelTester istzwar eine wertvolle Hilfe bei der Entwicklung und dem Testen benutzerdefinierter Elementmodelle, erfasst jedoch nicht alle möglichen Probleme in Unterklassen von „ QAbstractItemModel “ (und kann dies auch nicht). Insbesondere führt es niemals aussagekräftige zerstörende Tests eines Modells durch; diese müssen daher separat getestet werden.

Siehe auch Modell-View-Programmierung und „ QAbstractItemModel “.

Dokumentation zu Mitgliedstypen

enum class QAbstractItemModelTester::FailureReportingMode

Diese Aufzählung legt fest, wie ` QAbstractItemModelTester ` einen Fehler melden soll, wenn es eine Unterklasse von ` QAbstractItemModel ` testet.

KonstanteWertBeschreibung
QAbstractItemModelTester::FailureReportingMode::QtTest0Die Fehler werden als „ QtTest “-Testfehler gemeldet.
QAbstractItemModelTester::FailureReportingMode::Warning1Die Fehler werden als Warnmeldungen in der Protokollierungskategorie „ qt.modeltest “ gemeldet.
QAbstractItemModelTester::FailureReportingMode::Fatal2Ein Fehler führt zu einem sofortigen und abnormalen Programmabbruch. Der Grund für den Fehler wird mithilfe von „ qFatal() “ gemeldet.

Dokumentation der Member-Funktionen

QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)

Erstellt eine Modelltester-Instanz mit dem angegebenen Fehlermeldungsmodus „ parent “, die das Modell „ model “ testet.

Der Fehlerberichtsmodus ist auf „ FailureReportingMode::QtTest “ eingestellt.

QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)

Erstellt eine Modelltester-Instanz mit dem angegebenen parent, die das Modell model testet und dabei die angegebene mode verwendet, um Testfehler zu melden.

Siehe auch QAbstractItemModelTester::FailureReportingMode.

QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const

Gibt den Modus zurück, den diese Instanz zur Meldung von Testfehlern verwendet.

Siehe auch QAbstractItemModelTester::FailureReportingMode.

QAbstractItemModel *QAbstractItemModelTester::model() const

Gibt das Modell zurück, das diese Instanz testet.

[since 6.4] void QAbstractItemModelTester::setUseFetchMore(bool value)

Wenn „ value “ auf „true“ gesetzt ist, wird die dynamische Populierung des getesteten Modells aktiviert; dies ist die Standardeinstellung. Wenn „ value “ auf „false“ gesetzt ist, wird sie deaktiviert.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch ` 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.