2

我有一个接收的 QT 应用程序,X&Y coordinates我需要使用这些坐标模拟触摸事件(触摸或长触摸)。

我在 QT 参考文档中读到QTouchEventSequence该类可用于模拟触摸事件。我对 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 回答