4#ifndef QQUICKVISUALTESTUTILS_P_H
5#define QQUICKVISUALTESTUTILS_P_H
18#include <QtGui/private/qguiapplication_p.h>
19#include <QtGui/qpa/qplatformintegration.h>
20#include <QtQml/qqmlexpression.h>
21#include <QtQuick/private/qquickitem_p.h>
23#include <private/qmlutils_p.h>
25#include <QtCore/qpointer.h>
36 void dumpTree(QQuickItem *parent,
int depth = 0);
50 for (
int i = 0; i < steps; ++i) {
53 const qreal progress = qreal(i) / (steps - 1);
64 const QPoint &startingPosition = QPoint(0, 0),
67 void move(
const QPoint &pos,
int steps = 10,
int delayInMilliseconds = 1);
68 void move(
int x,
int y,
int steps = 10,
int delayInMilliseconds = 1);
71 QQuickWindow *mWindow =
nullptr;
72 const QPointingDevice *mPointingDevice =
nullptr;
79
80
81
83 T *
findItem(QQuickItem *parent,
const QString &objectName,
int index = -1)
85 using namespace Qt::StringLiterals;
87 const QMetaObject &mo = T::staticMetaObject;
88 for (
int i = 0; i < parent->childItems().size(); ++i) {
89 QQuickItem *item = qobject_cast<QQuickItem*>(parent->childItems().at(i));
92 if (mo.cast(item) && (objectName.isEmpty() || item->objectName() == objectName)) {
94 QQmlContext *context = qmlContext(item);
95 if (!context->isValid())
97 QQmlExpression e(context, item, u"index"_s);
98 if (e.evaluate().toInt() == index)
99 return static_cast<T*>(item);
101 return static_cast<T*>(item);
104 item = findItem<T>(item, objectName, index);
106 return static_cast<T*>(item);
113 QList<
T*>
findItems(QQuickItem *parent,
const QString &objectName,
bool visibleOnly =
true)
116 const QMetaObject &mo = T::staticMetaObject;
117 for (
int i = 0; i < parent->childItems().size(); ++i) {
118 QQuickItem *item = qobject_cast<QQuickItem*>(parent->childItems().at(i));
119 if (!item || (visibleOnly && (!item->isVisible() || QQuickItemPrivate::get(item)->culled)))
121 if (mo.cast(item) && (objectName.isEmpty() || item->objectName() == objectName))
122 items.append(
static_cast<T*>(item));
123 items += findItems<T>(item, objectName);
130 QList<
T*>
findItems(QQuickItem *parent,
const QString &objectName,
const QList<
int> &indexes)
133 for (
int i=0; i<indexes.size(); i++)
134 items << qobject_cast<QQuickItem*>(findItem<T>(parent, objectName, indexes[i]));
138 bool compareImages(
const QImage &ia,
const QImage &ib, QString *errorMessage);
147 template <
typename Func1>
151 return connect(obj, signal,
this, &SignalMultiSpy::receive, type);
173#if QT_CONFIG(quick_itemview)
179
180
181
182
183
223 void press(Qt::Key key);
225 void click(Qt::Key key);
228 QPointer<QWindow> m_window;
229 Qt::KeyboardModifiers m_modifiers;
237#define SKIP_IF_NO_WINDOW_ACTIVATION do
239 if (!(QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)))
240 QSKIP("Window activation is not supported on this platform"); \
241}while (false)
243#define SKIP_IF_NO_WINDOW_GRAB do
245 if (QGuiApplication::platformName() == QLatin1String("minimal"))
246 QSKIP("grabWindow is not supported on the minimal platform"); \
247}while (false)
249#define SKIP_IF_NO_MOUSE_HOVER do
251 if ((QGuiApplication::platformName() == QLatin1String("offscreen"))
252 || (QGuiApplication::platformName() == QLatin1String("minimal")))
253 QSKIP("Mouse hovering is not supported on the offscreen/minimal platforms"); \
254}while (false)
void release(Qt::Key key)
void move(const QPoint &pos, int steps=10, int delayInMilliseconds=1)
void move(int x, int y, int steps=10, int delayInMilliseconds=1)
PointLerper(QQuickWindow *window, const QPoint &startingPosition=QPoint(0, 0), const QPointingDevice *pointingDevice=QPointingDevice::primaryPointingDevice())
void centerOnScreen(QQuickWindow *window)
QList< T * > findItems(QQuickItem *parent, const QString &objectName, bool visibleOnly=true)
void dumpTree(QQuickItem *parent, int depth=0)
bool isDelegateVisible(QQuickItem *item)
QPoint mapToWindow(const QQuickItem *item, qreal relativeX, qreal relativeY)
QList< T * > findItems(QQuickItem *parent, const QString &objectName, const QList< int > &indexes)
QPoint mapCenterToWindow(const QQuickItem *item)
QPoint mapToWindow(const QQuickItem *item, const QPointF &relativePos)
QQuickItem * findVisibleChild(QQuickItem *parent, const QString &objectName)
void moveMouseAway(QQuickWindow *window)
bool compareImages(const QImage &ia, const QImage &ib, QString *errorMessage)
T * findItem(QQuickItem *parent, const QString &objectName, int index=-1)
QPoint lerpPoints(const QPoint &point1, const QPoint &point2, qreal t)
void forEachStep(int steps, F &&func)
QList< QByteArray > signalNames
QMetaObject::Connection connectToSignal(const typename QtPrivate::FunctionPointer< Func1 >::Object *obj, Func1 signal, Qt::ConnectionType type=Qt::AutoConnection)