Qt 为什么我无法为QGraphicsObject的sceneEvent中的位置执行计算?
我已经用QTouchEvents实现了QGraphicsObject,并重新实现了sceneEvent函数Qt 为什么我无法为QGraphicsObject的sceneEvent中的位置执行计算?,qt,touch,multi-touch,qgraphicsitem,qgraphicsscene,Qt,Touch,Multi Touch,Qgraphicsitem,Qgraphicsscene,我已经用QTouchEvents实现了QGraphicsObject,并重新实现了sceneEvent函数 bool LynxItem::sceneEvent(QEvent *event) { //qDebug() << "LynxItem::sceneEvent:" << itemId; switch (event->type()) { case QEvent::Gesture: { qDebug() <&l
bool LynxItem::sceneEvent(QEvent *event)
{
//qDebug() << "LynxItem::sceneEvent:" << itemId;
switch (event->type()) {
case QEvent::Gesture:
{
qDebug() << "LynxItem::sceneEvent:Gesture" << itemId;
return gestureEvent(static_cast<QGestureEvent*>(event));
break;
}
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
qDebug() << "LynxItem::sceneEvent:TouchUpdate" << itemId;
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
const QTouchEvent::TouchPoint &touchPoint1 = touchPoints.last();
/* This doesn't allow two objects to move at the same time */
//setPos ( touchPoint1.scenePos() - touchPoint1.pos());
/* This does work but the item is always moved from top left */
setPos(touchPoint1.scenePos());
event->accept();
break;
}
default:
return QGraphicsItem::sceneEvent(event);;
}
return true;
}
bool LynxItem::sceneEvent(QEvent*事件)
{
//qDebug()好的,回答我自己的问题:
setPos ( touchPoint1.scenePos() - touchPoint1.pos());
不正确。在TouchBegin上,我应该存储touchPoint1.pos():
然后使用第一个位置
setPos ( touchPoint1.scenePos() - m_TouchOffset);
setPos ( touchPoint1.scenePos() - m_TouchOffset);