为什么我从QTouchPoint获取无效数据?

时间:2011-05-17 10:06:15

标签: c++ qt touch

我有QGraphicsScene和QGraphicsItems。我重新实现了sceneEvent函数并处理了多点触控。

问题是随机我从本节中得到无效值:

    QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
    QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
    const QTouchEvent::TouchPoint &p0 = touchPoints.first();

提供以下调试信息(并非所有时间):

Debug: TouchUpdate: p0.scenePos(): QPointF(489.76, 160.71) :
Debug: TouchUpdate: p0.startPos(): QPointF(-8.62078e+14, 1.83351e+15)

我不知道为什么startPos()应该是这样的随机值。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您是否盲目地投射事件或使用如下所示的开关案例声明?

    bool MyItem::sceneEvent(QEvent *event)
    {
        case QEvent::TouchBegin:
        case QEvent::TouchUpdate:
        case QEvent::TouchEnd:
        {
            QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
            QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();

            //Remember to accept the event too
            event->accept();
            break;
        }
    }