2011-05-17 70 views
0

我有一個QGraphicsScene與QGraphicsItems。我已經重新實現了sceneEvent函數並處理多點觸摸。爲什麼我從我的QTouchPoint中獲取無效數據?

的問題是,隨機我得到無效值本節的:

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 ()應該是一個像這樣的隨機值。有什麼建議麼?

回答

3

你是盲目地施放事件還是使用如下的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; 
     } 
    } 
+0

正如您演示的那樣,它位於開關盒區塊內。事實證明,在這種情況下,這是硬件故障。有一個新的屏幕,一切都按預期工作。 – 2011-05-24 08:23:07

相關問題