2

受信するQTアプリケーションがあり、X&Y coordinatesこれらの座標を使用してタッチイベント(タッチまたはロングタッチ)をシミュレートする必要があります。

QTouchEventSequenceクラスを使用してタッチイベントをシミュレートできることをQTリファレンスドキュメントで読みました。私はQTにかなり慣れていないので、アプリケーションでQTをどのように使用できるかわかりません。誰かがこれについて私を助けることができますか?

4

1 に答える 1

1

したがって、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
于 2012-10-17T06:28:35.677 に答える