受信するQTアプリケーションがあり、X&Y coordinates
これらの座標を使用してタッチイベント(タッチまたはロングタッチ)をシミュレートする必要があります。
QTouchEventSequence
クラスを使用してタッチイベントをシミュレートできることをQTリファレンスドキュメントで読みました。私はQTにかなり慣れていないので、アプリケーションで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