Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qtestevent.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QTESTEVENT_H
5#define QTESTEVENT_H
6
7#if 0
8// inform syncqt
9#pragma qt_no_master_include
10#endif
11
12#include <QtTest/qttestglobal.h>
13#ifdef QT_GUI_LIB
14#include <QtTest/qtestkeyboard.h>
15#include <QtTest/qtestmouse.h>
16#endif
17#include <QtTest/qtestsystem.h>
18
19#include <QtCore/qlist.h>
20
21#include <stdlib.h>
22
24
25#ifdef QT_WIDGETS_LIB
26# define QT_ONLY_WIDGETLIB_USES
27#else
28# define QT_ONLY_WIDGETLIB_USES Q_DECL_UNUSED_MEMBER
29#endif
30
32{
33public:
34#ifdef QT_WIDGETS_LIB
35 virtual void simulate(QWidget *w) = 0;
36#endif
37 virtual QTestEvent *clone() const = 0;
38
39 virtual ~QTestEvent() {}
40};
41
42#ifdef QT_GUI_LIB
43class QTestKeyEvent: public QTestEvent
44{
45public:
46 inline QTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay)
47 : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {}
48 inline QTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay)
49 : _action(action), _delay(delay), _modifiers(modifiers),
50 _ascii(ascii), _key(Qt::Key_unknown) {}
51 inline QTestEvent *clone() const override { return new QTestKeyEvent(*this); }
52
53#ifdef QT_WIDGETS_LIB
54 inline void simulate(QWidget *w) override
55 {
56 if (_ascii == 0)
57 QTest::keyEvent(_action, w, _key, _modifiers, _delay);
58 else
59 QTest::keyEvent(_action, w, _ascii, _modifiers, _delay);
60 }
61#endif
62
63protected:
64 QTest::KeyAction _action;
65 int _delay;
66 Qt::KeyboardModifiers _modifiers;
67 char _ascii;
68 Qt::Key _key;
69};
70
71class QTestKeyClicksEvent: public QTestEvent
72{
73public:
74 inline QTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay)
75 : _keys(keys), _modifiers(modifiers), _delay(delay) {}
76 inline QTestEvent *clone() const override { return new QTestKeyClicksEvent(*this); }
77
78#ifdef QT_WIDGETS_LIB
79 inline void simulate(QWidget *w) override
80 {
81 QTest::keyClicks(w, _keys, _modifiers, _delay);
82 }
83#endif
84
85private:
87 QT_ONLY_WIDGETLIB_USES Qt::KeyboardModifiers _modifiers;
88 QT_ONLY_WIDGETLIB_USES int _delay;
89};
90
91class QTestMouseEvent: public QTestEvent
92{
93public:
94 inline QTestMouseEvent(QTest::MouseAction action, Qt::MouseButton button,
95 Qt::KeyboardModifiers modifiers, QPoint position, int delay)
96 : _action(action), _button(button), _modifiers(modifiers), _pos(position), _delay(delay) {}
97 inline QTestEvent *clone() const override { return new QTestMouseEvent(*this); }
98
99#ifdef QT_WIDGETS_LIB
100 inline void simulate(QWidget *w) override
101 {
102 QTest::mouseEvent(_action, w, _button, _modifiers, _pos, _delay);
103 }
104#endif
105
106private:
109 QT_ONLY_WIDGETLIB_USES Qt::KeyboardModifiers _modifiers;
111 QT_ONLY_WIDGETLIB_USES int _delay;
112};
113#endif //QT_GUI_LIB
114
115
117{
118public:
119 inline QTestDelayEvent(int msecs): _delay(msecs) {}
120 inline QTestEvent *clone() const override { return new QTestDelayEvent(*this); }
121
122#ifdef QT_WIDGETS_LIB
123 inline void simulate(QWidget * /*w*/) override { QTest::qWait(_delay); }
124#endif
125
126private:
127 QT_ONLY_WIDGETLIB_USES int _delay;
128};
129
130class QTestEventList: public QList<QTestEvent *>
131{
132public:
133 inline QTestEventList() {}
135 { for (int i = 0; i < other.size(); ++i) append(other.at(i)->clone()); }
137 { clear(); }
138 inline void clear()
140
141#ifdef QT_GUI_LIB
142 inline void addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
143 { addKeyEvent(QTest::Click, qtKey, modifiers, msecs); }
144 inline void addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
145 { addKeyEvent(QTest::Press, qtKey, modifiers, msecs); }
146 inline void addKeyRelease(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
147 { addKeyEvent(QTest::Release, qtKey, modifiers, msecs); }
148 inline void addKeyEvent(QTest::KeyAction action, Qt::Key qtKey,
149 Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
150 { append(new QTestKeyEvent(action, qtKey, modifiers, msecs)); }
151
152 inline void addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
153 { addKeyEvent(QTest::Click, ascii, modifiers, msecs); }
154 inline void addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
155 { addKeyEvent(QTest::Press, ascii, modifiers, msecs); }
156 inline void addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
157 { addKeyEvent(QTest::Release, ascii, modifiers, msecs); }
158 inline void addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
159 { append(new QTestKeyClicksEvent(keys, modifiers, msecs)); }
160 inline void addKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
161 { append(new QTestKeyEvent(action, ascii, modifiers, msecs)); }
162
163 inline void addMousePress(Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(),
164 QPoint pos = QPoint(), int delay=-1)
165 { append(new QTestMouseEvent(QTest::MousePress, button, stateKey, pos, delay)); }
166 inline void addMouseRelease(Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(),
167 QPoint pos = QPoint(), int delay=-1)
168 { append(new QTestMouseEvent(QTest::MouseRelease, button, stateKey, pos, delay)); }
169 inline void addMouseClick(Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(),
170 QPoint pos = QPoint(), int delay=-1)
171 { append(new QTestMouseEvent(QTest::MouseClick, button, stateKey, pos, delay)); }
172 inline void addMouseDClick(Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(),
173 QPoint pos = QPoint(), int delay=-1)
174 { append(new QTestMouseEvent(QTest::MouseDClick, button, stateKey, pos, delay)); }
175 inline void addMouseMove(QPoint pos = QPoint(), int delay=-1)
176 { append(new QTestMouseEvent(QTest::MouseMove, Qt::NoButton, Qt::KeyboardModifiers(), pos, delay)); }
177#endif //QT_GUI_LIB
178
179 inline void addDelay(int msecs)
180 { append(new QTestDelayEvent(msecs)); }
181
182#ifdef QT_WIDGETS_LIB
183 inline void simulate(QWidget *w)
184 {
185 for (int i = 0; i < size(); ++i)
186 at(i)->simulate(w);
187 }
188#endif
189};
190
191#undef QT_ONLY_WIDGETLIB_USES
192
194
196
197#endif
Definition qlist.h:75
qsizetype size() const noexcept
Definition qlist.h:397
void append(parameter_type t)
Definition qlist.h:458
void clear()
Definition qlist.h:434
\inmodule QtCore\reentrant
Definition qpoint.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
QTestEvent * clone() const override
Definition qtestevent.h:120
QTestDelayEvent(int msecs)
Definition qtestevent.h:119
QTestEventList(const QTestEventList &other)
Definition qtestevent.h:134
void addDelay(int msecs)
Definition qtestevent.h:179
virtual ~QTestEvent()
Definition qtestevent.h:39
virtual QTestEvent * clone() const =0
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
EGLImageKHR int int EGLuint64KHR * modifiers
QPushButton * button
[2]
qDeleteAll(list.begin(), list.end())
Combined button and popup list for selecting options.
MouseAction
Definition qtestmouse.h:42
@ MouseMove
Definition qtestmouse.h:42
@ MousePress
Definition qtestmouse.h:42
@ MouseDClick
Definition qtestmouse.h:42
@ MouseClick
Definition qtestmouse.h:42
@ MouseRelease
Definition qtestmouse.h:42
static void mouseEvent(MouseAction action, QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPoint pos, int delay=-1)
Definition qtestmouse.h:67
static void keyEvent(KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier=Qt::NoModifier, int delay=-1)
Q_CORE_EXPORT void qWait(int ms)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qcompare.h:63
MouseButton
Definition qnamespace.h:56
@ NoButton
Definition qnamespace.h:57
@ Key_unknown
@ NoModifier
#define Q_DECLARE_METATYPE(TYPE)
Definition qmetatype.h:1525
GLuint64 key
GLfloat GLfloat GLfloat w
[0]
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
static QString qtKey(CFStringRef cfkey)
#define QT_ONLY_WIDGETLIB_USES
Definition qtestevent.h:28
QStringList keys
QSharedPointer< T > other(t)
[5]
QAction * at