我有一个带有QGraphicsItems的QGraphicsScene。我已经重新实现了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()应该是这样的随机值。有什么建议么?

最佳答案

您是在盲目转换事件还是使用如下switch-case语句?

    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;
        }
    }

关于c++ - 为什么我从QTouchPoint中获取无效数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6029257/

10-09 01:27