diff options
Diffstat (limited to 'src/qmltest')
-rw-r--r-- | src/qmltest/quicktest.cpp | 27 | ||||
-rw-r--r-- | src/qmltest/quicktest.h | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/qmltest/quicktest.cpp b/src/qmltest/quicktest.cpp index 58fc5a99e1..814e03d6e3 100644 --- a/src/qmltest/quicktest.cpp +++ b/src/qmltest/quicktest.cpp @@ -44,6 +44,8 @@ #include <QtQml/qqml.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcontext.h> +#include <QtQuick/private/qquickitem_p.h> +#include <QtQuick/qquickitem.h> #include <QtQuick/qquickview.h> #include <QtQml/qjsvalue.h> #include <QtQml/qjsengine.h> @@ -90,6 +92,31 @@ bool QQuickTest::qIsPolishScheduled(const QQuickItem *item) return QQuickItemPrivate::get(item)->polishScheduled; } +/*! + \fn bool qWaitForItemPolished(const QQuickItem *item, int timeout = 5000) + \relates QtQuickTest + \since 5.13 + + Waits for \a timeout milliseconds or until + \l {QQuickItem::}{updatePolish()} has been called on \a item. + + Returns \c true if \c updatePolish() was called on \a item within + \a timeout milliseconds, otherwise returns \c false. + + To use this function, add the following line to your test's \c .pro file: + + \code + QT += qmltest + \endcode + + \sa QQuickItem::polish(), QQuickItem::updatePolish(), + QQuickTest::qIsPolishScheduled() +*/ +bool QQuickTest::qWaitForItemPolished(const QQuickItem *item, int timeout) +{ + return QTest::qWaitFor([&]() { return !QQuickItemPrivate::get(item)->polishScheduled; }, timeout); +} + class QTestRootObject : public QObject { Q_OBJECT diff --git a/src/qmltest/quicktest.h b/src/qmltest/quicktest.h index d8054498ed..8e3510c9a5 100644 --- a/src/qmltest/quicktest.h +++ b/src/qmltest/quicktest.h @@ -102,6 +102,7 @@ Q_QUICK_TEST_EXPORT int quick_test_main_with_setup(int argc, char **argv, const namespace QQuickTest { Q_QUICK_TEST_EXPORT bool qIsPolishScheduled(const QQuickItem *item); +Q_QUICK_TEST_EXPORT bool qWaitForItemPolished(const QQuickItem *item, int timeout = 5000); } QT_END_NAMESPACE |