我有一个接收X&Y coordinates
的QT应用程序,我需要使用这些坐标来模拟触摸事件(触摸或长触摸)。
我在QT参考文档中读到,QTouchEventSequence
类可用于模拟触摸事件。我对QT很新,我不知道如何在应用程序中使用它。有人可以帮我解决这个问题。
答案 0 :(得分:0)
所以你想使用QtTest模块。它有一个很好的tutorial。
快速入门这里是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