Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
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
23QT_BEGIN_NAMESPACE
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
31QT_WARNING_PUSH
32QT_WARNING_DISABLE_CLANG("-Wweak-vtables") // QTBUG-1044486
33
34class QTestEvent
35{
36public:
37#ifdef QT_WIDGETS_LIB
38 virtual void simulate(QWidget *w) = 0;
39#endif
40 virtual QTestEvent *clone() const = 0;
41
42 virtual ~QTestEvent() = default; // ### FIXME: weak vtable (QTBUG-104486)
43};
44
45#ifdef QT_GUI_LIB
46class QTestKeyEvent: public QTestEvent
47{
48public:
49 ~QTestKeyEvent() override = default; // ### FIXME: weak vtable (QTBUG-104486)
50
51 inline QTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay)
52 : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {}
53 inline QTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay)
54 : _action(action), _delay(delay), _modifiers(modifiers),
55 _ascii(ascii), _key(Qt::Key_unknown) {}
56 inline QTestEvent *clone() const override { return new QTestKeyEvent(*this); }
57
58#ifdef QT_WIDGETS_LIB
59 inline void simulate(QWidget *w) override
60 {
61 if (_ascii == 0)
62 QTest::keyEvent(_action, w, _key, _modifiers, _delay);
63 else
64 QTest::keyEvent(_action, w, _ascii, _modifiers, _delay);
65 }
66#endif
67
68protected:
69 QTest::KeyAction _action;
70 int _delay;
71 Qt::KeyboardModifiers _modifiers;
72 char _ascii;
73 Qt::Key _key;
74};
75
76class QTestKeyClicksEvent: public QTestEvent
77{
78public:
79 ~QTestKeyClicksEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486)
80
81 inline QTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay)
82 : _keys(keys), _modifiers(modifiers), _delay(delay) {}
83 inline QTestEvent *clone() const override { return new QTestKeyClicksEvent(*this); }
84
85#ifdef QT_WIDGETS_LIB
86 inline void simulate(QWidget *w) override
87 {
88 QTest::keyClicks(w, _keys, _modifiers, _delay);
89 }
90#endif
91
92private:
93 QT_ONLY_WIDGETLIB_USES QString _keys;
94 QT_ONLY_WIDGETLIB_USES Qt::KeyboardModifiers _modifiers;
95 QT_ONLY_WIDGETLIB_USES int _delay;
96};
97
98class QTestMouseEvent: public QTestEvent
99{
100public:
101 ~QTestMouseEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486)
102
103 inline QTestMouseEvent(QTest::MouseAction action, Qt::MouseButton button,
104 Qt::KeyboardModifiers modifiers, QPoint position, int delay)
105 : _action(action), _button(button), _modifiers(modifiers), _pos(position), _delay(delay) {}
106 inline QTestEvent *clone() const override { return new QTestMouseEvent(*this); }
107
108#ifdef QT_WIDGETS_LIB
109 inline void simulate(QWidget *w) override
110 {
111 QTest::mouseEvent(_action, w, _button, _modifiers, _pos, _delay);
112 }
113#endif
114
115private:
116 QT_ONLY_WIDGETLIB_USES QTest::MouseAction _action;
117 QT_ONLY_WIDGETLIB_USES Qt::MouseButton _button;
118 QT_ONLY_WIDGETLIB_USES Qt::KeyboardModifiers _modifiers;
119 QT_ONLY_WIDGETLIB_USES QPoint _pos;
120 QT_ONLY_WIDGETLIB_USES int _delay;
121};
122#endif //QT_GUI_LIB
123
124
126{
127public:
128 inline QTestDelayEvent(int msecs): _delay(msecs) {}
129 ~QTestDelayEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486)
130
131 inline QTestEvent *clone() const override { return new QTestDelayEvent(*this); }
132
133#ifdef QT_WIDGETS_LIB
134 inline void simulate(QWidget * /*w*/) override { QTest::qWait(_delay); }
135#endif
136
137private:
138 QT_ONLY_WIDGETLIB_USES int _delay;
139};
140
142{
143public:
144 inline QTestEventList() {}
146 { for (int i = 0; i < other.size(); ++i) append(other.at(i)->clone()); }
148 { clear(); }
149 inline void clear()
150 { qDeleteAll(*this); QList<QTestEvent *>::clear(); }
151
152#ifdef QT_GUI_LIB
162
163 inline void addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
165 inline void addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
167 inline void addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
169 inline void addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
173
175 QPoint pos = QPoint(), int delay=-1)
178 QPoint pos = QPoint(), int delay=-1)
181 QPoint pos = QPoint(), int delay=-1)
184 QPoint pos = QPoint(), int delay=-1)
186 inline void addMouseMove(QPoint pos = QPoint(), int delay=-1)
188#endif //QT_GUI_LIB
189
190 inline void addDelay(int msecs)
191 { append(new QTestDelayEvent(msecs)); }
192
193#ifdef QT_WIDGETS_LIB
194 inline void simulate(QWidget *w)
195 {
196 for (int i = 0; i < size(); ++i)
197 at(i)->simulate(w);
198 }
199#endif
200};
201
202#undef QT_ONLY_WIDGETLIB_USES
203
204QT_WARNING_POP // Clang -Wweak-vtables
205
207
208Q_DECLARE_METATYPE(QTestEventList)
209
210#endif
\inmodule QtSql
~QTestDelayEvent() override=default
QTestEvent * clone() const override
Definition qtestevent.h:131
QTestDelayEvent(int msecs)
Definition qtestevent.h:128
QTestEventList(const QTestEventList &other)
Definition qtestevent.h:145
void addDelay(int msecs)
Definition qtestevent.h:190
#define QT_ONLY_WIDGETLIB_USES
Definition qtestevent.h:28