我有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()应该是这样的随机值。有什么建议吗?
答案 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;
}
}