我有一个带有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/