QTest::QTouchEventSequence Class
class QTest::QTouchEventSequenceQTouchEventSequence 类用于模拟一系列触摸事件。更多内容...
| 头文件: | #include <qtestsupport_gui.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Test) target_link_libraries(mytarget PRIVATE Qt6::Test) |
| qmake: | QT += testlib |
| 由以下内容继承: |
公共函数
| virtual | ~QTouchEventSequence() |
(since 6.12) bool | cancel(bool processEvents = true) |
| virtual bool | commit(bool processEvents = true) |
| QTest::QTouchEventSequence & | move(int touchId, const QPoint &pt, QWindow *window = nullptr) |
| QTest::QTouchEventSequence & | press(int touchId, const QPoint &pt, QWindow *window = nullptr) |
| QTest::QTouchEventSequence & | release(int touchId, const QPoint &pt, QWindow *window = nullptr) |
| virtual QTest::QTouchEventSequence & | stationary(int touchId) |
详细说明
若要在特定设备上为窗口或控件模拟一系列触摸事件,请调用QTest::touchEvent 来创建一个QTouchEventSequence实例。通过调用press()、move()、release()和stationary()向序列中添加触摸事件,并让该实例超出作用域,从而将序列提交给事件系统。
示例:
QTouchDevice *dev = QTest::createTouchDevice();
QWidget widget;
QTest::touchEvent(&widget, dev)
.press(0, QPoint(10, 10));
QTest::touchEvent(&widget, dev)
.stationary(0)
.press(1, QPoint(40, 10));
QTest::touchEvent(&widget, dev)
.move(0, QPoint(12, 12))
.move(1, QPoint(45, 5));
QTest::touchEvent(&widget, dev)
.release(0, QPoint(12, 12))
.release(1, QPoint(45, 5));成员函数文档
[virtual noexcept] QTouchEventSequence::~QTouchEventSequence()
除非已禁用 autoCommit,否则会提交这组触摸事件,并释放已分配的资源。
[since 6.12] bool QTouchEventSequence::cancel(bool processEvents = true)
为序列的设备执行触摸取消操作,并返回该操作是否被接受。如果processEvents 的值为true (默认值),则随后会触发事件循环。
模拟触摸序列被取消,例如由合成器取消。所有已暂存但尚未提交的点位将被丢弃,并且由于取消操作之后只能跟进新的按压,已记录的点位也会被清除。
该函数于 Qt 6.12 中引入。
[virtual] bool QTouchEventSequence::commit(bool processEvents = true)
将此触摸事件提交至事件系统,并返回该事件在传递后是否被接受。
通常无需调用此函数,因为它会在析构函数中被自动调用。但是,如果禁用了 autoCommit,则事件只有在显式调用此函数时才会被提交。显式调用它的另一个原因是检查返回值。
在特殊情况下,测试可能需要禁用事件的处理。这可以通过将processEvents 设置为false来实现。这样只会将事件放入队列:事件循环不会被强制处理该事件。
返回事件在传递后是否被接受。
QTest::QTouchEventSequence &QTouchEventSequence::move(int touchId, const QPoint &pt, QWindow *window = nullptr)
向该序列中添加一个针对位置pt 的触点touchId 的移动事件,并返回对该QTouchEventSequence 的引用。
位置pt 被解释为相对于window 。如果window 是空指针,则pt 被解释为相对于实例化此QTouchEventSequence 时提供的窗口。
模拟用户移动了由touchId 标识的指尖。
QTest::QTouchEventSequence &QTouchEventSequence::press(int touchId, const QPoint &pt, QWindow *window = nullptr)
向该序列添加一个针对位置pt 的触点touchId 的按压事件,并返回对该QTouchEventSequence 的引用。
位置pt 被解释为相对于window 。如果window 是空指针,则pt 被解释为相对于实例化此QTouchEventSequence 时提供的窗口。
模拟用户使用由touchId 标识的指尖触摸了触摸屏或触控板。
QTest::QTouchEventSequence &QTouchEventSequence::release(int touchId, const QPoint &pt, QWindow *window = nullptr)
向该序列添加触点touchId 在位置pt 处的释放事件,并返回对该QTouchEventSequence 的引用。
位置pt 被解释为相对于window 。如果window 是空指针,则pt 被解释为相对于实例化此QTouchEventSequence 时提供的窗口。
模拟用户抬起了由touchId 标识的指尖。
[virtual] QTest::QTouchEventSequence &QTouchEventSequence::stationary(int touchId)
向该序列中为触点touchId 添加一个静态事件,并返回对该QTouchEventSequence 的引用。
模拟用户未移动由touchId 标识的指尖。
© 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.