QQuickTest Namespace

Der QQuickTest-Namensraum enthält alle Funktionen und Makros im Zusammenhang mit Qt Quick Test. Mehr...

Header: #include <QtQuickTest>

Funktionen

bool qIsPolishScheduled(const QQuickItem *item)
(since 6.4) bool qIsPolishScheduled(const QQuickWindow *window)
(since 6.4) bool qWaitForPolish(const QQuickItem *item, int timeout = defaultTimeout)
(since 6.4) bool qWaitForPolish(const QQuickWindow *window, int timeout = defaultTimeout)

Makros

QUICK_TEST_MAIN(name)
QUICK_TEST_MAIN_WITH_SETUP(name, QuickTestSetupClass)

Detaillierte Beschreibung

Siehe die Einführung in Qt Quick Test für Informationen über das Schreiben von Qt Quick Unit-Tests.

Um auf die Qt Quick Test C++ Bibliothek zu linken, siehe Qt Quick Test C++ API.

Siehe auch Ausführen von C++ vor QML-Tests.

Funktionsdokumentation

bool QQuickTest::qIsPolishScheduled(const QQuickItem *item)

Gibt true zurück, wenn updatePolish() seit dem letzten Aufruf von polish() nicht auf item aufgerufen wurde, andernfalls gibt es false zurück.

Bei der Zuweisung von Werten zu Eigenschaften in QML kann es vorkommen, dass das Layout des Elements als Folge der Zuweisung nicht sofort wirksam wird, sondern erst, wenn das Element poliert ist. In diesen Fällen können Sie diese Funktion verwenden, um sicherzustellen, dass das Element poliert wurde, bevor die Ausführung des Tests fortgesetzt wird. Ein Beispiel:

QVERIFY(QQuickTest::qIsPolishScheduled(item));
QVERIFY(QQuickTest::qWaitForItemPolished(item));

Ohne den obigen Aufruf von qIsPolishScheduled() würde der Aufruf von qWaitForItemPolished() möglicherweise feststellen, dass kein Polieren geplant war, und daher den Test sofort bestehen, in der Annahme, dass das Objekt bereits poliert wurde. Diese Funktion macht deutlich, warum ein Objekt nicht poliert wurde, und ermöglicht es, dass Tests unter solchen Umständen frühzeitig fehlschlagen.

Das QML-Äquivalent zu dieser Funktion ist isPolishScheduled().

Siehe auch QQuickItem::polish() und QQuickItem::updatePolish().

[since 6.4] bool QQuickTest::qIsPolishScheduled(const QQuickWindow *window)

Diese Funktion überlastet qIsPolishScheduled().

Gibt true zurück, wenn es irgendwelche Elemente gibt, die von diesem Fenster verwaltet werden, für die qIsPolishScheduled(item) true zurückgibt, andernfalls false.

Wenn z. B. ein Element irgendwo in der Szene poliert werden kann oder auch nicht, Sie aber darauf warten müssen, wenn es poliert ist, können Sie den folgenden Code verwenden:

if (QQuickTest::qIsPolishScheduled(window))
    QVERIFY(QQuickTest::qWaitForPolish(window));

Das QML-Äquivalent zu dieser Funktion ist isPolishScheduled().

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch QQuickItem::polish(), QQuickItem::updatePolish(), und QQuickTest::qWaitForPolish().

[since 6.4] bool QQuickTest::qWaitForPolish(const QQuickItem *item, int timeout = defaultTimeout)

Wartet für timeout Millisekunden oder bis updatePolish() auf item aufgerufen wurde.

Gibt true zurück, wenn updatePolish() innerhalb von timeout Millisekunden auf item aufgerufen wurde, andernfalls gibt sie false zurück.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch QQuickItem::polish(), QQuickItem::updatePolish(), und QQuickTest::qIsPolishScheduled().

[since 6.4] bool QQuickTest::qWaitForPolish(const QQuickWindow *window, int timeout = defaultTimeout)

Wartet auf timeout Millisekunden oder bis qIsPolishScheduled(item) für alle von window verwalteten Elemente false zurückgibt.

Gibt true zurück, wenn qIsPolishScheduled(item) für alle Elemente innerhalb von timeout Millisekunden false zurückgibt, andernfalls false.

Das QML-Äquivalent zu dieser Funktion ist waitForPolish().

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch QQuickItem::polish(), QQuickItem::updatePolish(), und QQuickTest::qIsPolishScheduled().

Makro-Dokumentation

QUICK_TEST_MAIN(name)

Richtet den Einstiegspunkt für eine Qt Quick Test Anwendung ein. Das Argument name identifiziert diesen Satz von Tests eindeutig.

#include <QtQuickTest>
QUICK_TEST_MAIN(example)

Hinweis: Das Makro geht davon aus, dass sich Ihre Testquellen im aktuellen Verzeichnis befinden, es sei denn, die Umgebungsvariable QUICK_TEST_SOURCE_DIR ist gesetzt.

Siehe auch QUICK_TEST_MAIN_WITH_SETUP() und Ausführen von Qt Quick Tests.

QUICK_TEST_MAIN_WITH_SETUP(name, QuickTestSetupClass)

Richtet den Einstiegspunkt für eine Qt Quick Test Anwendung ein. Das Argument name identifiziert diesen Satz von Tests eindeutig.

Dieses Makro ist identisch mit QUICK_TEST_MAIN(), mit der Ausnahme, dass es ein zusätzliches Argument QuickTestSetupClass entgegennimmt, den Typ einer QObject-abgeleiteten Klasse, die instanziiert werden soll. Mit dieser Klasse ist es möglich, zusätzlichen Setup-Code zu definieren, der vor der Ausführung des QML-Tests ausgeführt wird.

Hinweis: Das Makro geht davon aus, dass sich Ihre Testquellen im aktuellen Verzeichnis befinden, es sei denn, die Umgebungsvariable QUICK_TEST_SOURCE_DIR ist gesetzt.

Das folgende Snippet demonstriert die Verwendung dieses Makros:

// src_qmltest_qquicktest.cpp
#include <QtQuickTest>
#include <QQmlEngine>
#include <QQmlContext>
#include <QGuiApplication>

class Setup : public QObject
{
    Q_OBJECT

public:
    Setup() {}

public slots:
    void applicationAvailable()
    {
        // Initialization that only requires the QGuiApplication object to be available
    }

    void qmlEngineAvailable(QQmlEngine *engine)
    {
        // Initialization requiring the QQmlEngine to be constructed
        engine->rootContext()->setContextProperty("myContextProperty", QVariant(true));
    }

    void cleanupTestCase()
    {
        // Implement custom resource cleanup
    }
};

QUICK_TEST_MAIN_WITH_SETUP(mytest, Setup)

#include "src_qmltest_qquicktest.moc"

Siehe auch QUICK_TEST_MAIN() und Ausführen von Qt Quick Tests.

© 2025 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.