我有一个接收的 QT 应用程序,X&Y coordinates
我需要使用这些坐标模拟触摸事件(触摸或长触摸)。
我在 QT 参考文档中读到QTouchEventSequence
该类可用于模拟触摸事件。我对 QT 很陌生,我不知道如何在应用程序中使用它。有人可以帮我解决这个问题。
所以你想使用 QtTest 模块。它有一个很好的教程。
为了快速入门,这里有一个 QTouchEventSequence 的快速示例:
// file test.cc
#include <QtGui>
#include <QtTest>
// This widget will receive touch events
class MyWidget: public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget* parent = NULL)
: QWidget(parent)
{
// With out this flag widget shouldn't receive any TouchEvent.
setAttribute(Qt::WA_AcceptTouchEvents);
}
protected:
bool event(QEvent* e)
{
switch(e->type())
{
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
emit newTouchEvent(); // We will catch this in our test
return true;
default:
return QWidget::event(e);
}
}
signals:
void newTouchEvent();
};
// Here out test
class TouchTest: public QObject
{
Q_OBJECT
private slots:
void simpleTest();
};
void TouchTest::simpleTest()
{
MyWidget widget;
widget.show();
QSignalSpy spy(&widget, SIGNAL(newTouchEvent()));
// Simulate touch event
QTest::touchEvent(&widget).press(0, QPoint(10, 10));
QCOMPARE(spy.count(), 1); // Did we called our signal. Yes. Cool!
}
QTEST_MAIN(TouchTest)
#include "test.moc"
你应该运行 moc、qmake 和 make 来运行它:
qmake -project "CONFIG += qtestlib"
qmake
moc test.cc > test.moc
make
./test