从QT应用程序模拟触摸事件

时间:2012-10-16 05:38:57

标签: qt qt4

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

我在QT参考文档中读到,QTouchEventSequence类可用于模拟触摸事件。我对QT很新,我不知道如何在应用程序中使用它。有人可以帮我解决这个问题。

1 个答案:

答案 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