このページでは

QQuickTest Namespace

QQuickTest ネームスペースには、Qt Quick テストに関連するすべての関数とマクロが含まれています。詳細...

Header: #include <QtQuickTest>

関数

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)

マクロ

(since 6.10) QTRY_VERIFY_ACTIVE_FOCUS(item)
QUICK_TEST_MAIN(name)
QUICK_TEST_MAIN_WITH_SETUP(name, QuickTestSetupClass)
(since 6.10) QVERIFY_ACTIVE_FOCUS(item)

詳細な説明

Qt Quick のユニットテストの記述方法については、『 Qt Quick Test入門』を参照してください。

Qt Quick Test C++ ライブラリをリンクするには、以下を参照してください。 Qt Quick Test C++ APIを参照してください。

「QML テストの前に C++ を実行する」も参照してください 。

関数のドキュメント

bool QQuickTest::qIsPolishScheduled(const QQuickItem *item)

前回の `polish()` の呼び出し以降、item に対して `updatePolish()` が呼び出されていない場合は `true ` を返し、そうでない場合は `false` を返します。

QML でプロパティに値を代入する場合、その代入の結果としてアイテムが行うべきレイアウト処理は、直ちに反映されないことがあり、代わりにアイテムのポリッシュが完了するまで延期されることがあります。このような場合、この関数を使用することで、テストの実行を続行する前にアイテムのポリッシュが完了していることを確実にすることができます。例:

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

上記のqIsPolishScheduled() の呼び出しがない場合、qWaitForItemPolished() の呼び出しでは、ポリッシュがスケジュールされていないことを検知できず、アイテムがすでにポリッシュ済みであると仮定して即座にパスしてしまう可能性があります。この関数を使用することで、アイテムがポリッシュされなかった理由を明確にし、そのような状況下でテストを早期に失敗させることができます。

この関数のQMLにおける対応関数は、isPolishScheduled()です。

QQuickItem::polish() およびQQuickItem::updatePolish()も参照してください 。

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

このウィンドウによって管理されているアイテムのうち、qIsPolishScheduled(item) の呼び出し結果がtrue となるものが存在する場合、true を返します。それ以外の場合は、false を返します。

たとえば、シーン内のどこかに、ポリッシュされている場合とそうでない場合があるアイテムがあり、ポリッシュされている場合はその処理を待つ必要がある場合、次のコードを使用できます。

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

この関数のQMLにおける対応関数は、isPolishScheduled()です。

この関数は、QQuickTest::qIsPolishScheduled() をオーバーロードしています。

この関数は Qt 6.4 で導入されました。

QQuickItem::polish()、QQuickItem::updatePolish()、およびQQuickTest::qWaitForPolish()も参照してください 。

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

timeout ミリ秒間待機するか、item に対してupdatePolish()が呼び出されるまで待機します。

item に対してupdatePolish() がtimeout ミリ秒以内に呼び出された場合はtrue を返し、そうでない場合はfalse を返します。

この関数は Qt 6.4 で導入されました。

QQuickItem::polish()、QQuickItem::updatePolish()、およびQQuickTest::qIsPolishScheduled()も参照してください 。

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

timeout ミリ秒間待機するか、qIsPolishScheduled(item) がwindow によって管理されているすべての項目についてfalse を返すまで待機します。

qIsPolishScheduled(item) がtimeout ミリ秒以内にすべてのアイテムについてfalseを返した場合、true を返します。それ以外の場合はfalse を返します。

この関数の QML での対応はwaitForPolish() です。

この関数は Qt 6.4 で導入されました。

QQuickItem::polish()、QQuickItem::updatePolish()、およびQQuickTest::qIsPolishScheduled()も参照してください 。

マクロのドキュメント

[since 6.10] QTRY_VERIFY_ACTIVE_FOCUS(item)

このマクロは、QVERIFY_ACTIVE_FOCUS とitem で実行されるのと同じチェックを、条件が真になるか、タイムアウト(ミリ秒単位)に達するまで繰り返し行います。各評価の合間に、イベントが処理されます。タイムアウトに達した場合、テストログに失敗が記録され、テストはそれ以上実行されません。

注:この マクロは、テストフレームワークによって呼び出されるテスト関数内でのみ使用できます。

このマクロは Qt 6.10 で導入されました。

QUICK_TEST_MAIN(name)

Qt Quick Testアプリケーションのエントリポイントを設定します。name 引数は、この一連のテストを一意に識別します。

#include <QtQuickTest>
QUICK_TEST_MAIN(example)

注: QUICK_TEST_SOURCE_DIR 環境変数が設定されていない限り、このマクロは テストソースが現在のディレクトリにあることを前提としています。

「 QUICK_TEST_MAIN_WITH_SETUP()」および「 Qt Quick テストの実行」も参照してください 。

QUICK_TEST_MAIN_WITH_SETUP(name, QuickTestSetupClass)

Qt Quick Testアプリケーションのエントリポイントを設定します。name 引数は、この一連のテストを一意に識別します。

このマクロは `QUICK_TEST_MAIN()` と同一ですが、インスタンス化される `QObject` 派生クラスの型である `QuickTestSetupClass` という引数を追加で受け取る点が異なります。このクラスを使用することで、QML テストの実行前に実行する追加のセットアップコードを定義することが可能です。

注: QUICK_TEST_SOURCE_DIR 環境変数が設定されていない限り、このマクロは テストソースが現在のディレクトリにあることを前提としています。

以下のスニペットは、このマクロの使用例を示しています:

// 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"

「 QUICK_TEST_MAIN()」および「 Qt Quick テストの実行」も参照してください 。

[since 6.10] QVERIFY_ACTIVE_FOCUS(item)

item (QQuickItem から派生している必要がある)が、active focus を持っているかどうかを確認します。持っている場合は、実行が続行されます。持っていない場合は、テストログに失敗が記録され、テストのそれ以降の実行は行われません。失敗メッセージには、失敗の原因を特定するために必要な、フォーカス固有の情報が含まれます。

注:この マクロは、テストフレームワークによって呼び出されるテスト関数内でのみ使用できます。

このマクロは Qt 6.10 で導入されました。

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