Почему я получаю неверные данные из моего QTouchPoint? - PullRequest
0 голосов
/ 17 мая 2011

У меня есть 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 Ответ

3 голосов
/ 17 мая 2011

Используете ли вы вслепую события или используете оператор переключателя, как показано ниже?

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