2013-12-17 24 views
9

Próbuję napisać aplikację pulpitu wielodotykowego. Mam aplikację opartą na QML i teraz próbuję przeciągnąć więcej niż jeden element QML w tym samym czasie.Tworzenie wielodotykowej aplikacji Qt 5.1

Próbowałem użyć MultiPointTouchArea, ale to nie zadziała. Dostałem 2 elementy. Na przykład 2 zdjęcia, które powinny być przeciągane przez dwie różne osoby w tym samym czasie.

Po zdefiniowaniu prostokąta zawierającego MultiPointTouchArea i połączyłem jeden touchPoint z każdym zdjęciem, pierwsze zdarzenie dotykowe przenosi pierwsze zdjęcie, a drugie zdarzenie dotykowe przenosi drugie zdjęcie.

jak w tym przykładzie kodu:

Rectangle { 
    width: 400; height: 400 
    MultiPointTouchArea { 
     anchors.fill: parent 
     touchPoints: [ 
      TouchPoint { id: point1 }, 
      TouchPoint { id: point2 } 
     ] 
    } 

    Rectangle { 
     width: 30; height: 30 
     color: "green" 
     x: point1.x 
     y: point1.y 
    } 

    Rectangle { 
     width: 30; height: 30 
     color: "yellow" 
     x: point2.x 
     y: point2.y 
    } 
} 

To nie jest to, czego szukam. Chcę, aby się poruszały, jeśli są dotykane i przeciągane, zarówno w tym samym czasie, bez przeszkadzania sobie nawzajem, jak i bez rozkazów dotyku. Czy to możliwe w qml? Czy muszę kodować funkcję C++?

Mam nadzieję, że rozumiesz mój problem.

Odpowiedz

2

Jestem nowy MultiPointTouchArea i robi jakieś dochodzenie, wydaje się, że trzeba dynamicznie przydzielaćpunkt (i) z pierwszym dotknięciu Prostokąt (j).

W przykładzie robisz statyczny przydział:

prostokąt (zielony) będzie śledzić punkt 1, bo robisz tak

x: point1.x 
    y: point1.y 

Prostokąt (żółty) pójdą punkt2 bo robisz tak

x: point2.x 
    y: point2.y 

---> Zielony prostokąt nigdy nie pójdą pkt 1 i żółta nigdy nie pójdą pkt 2.

MultiPointTouchArea ma zdefiniowaną tablicę punktów dotyku, pierwszy gest dotykowy, który pojawia się w momencie pierwszego dotyku i tak dalej.

Musisz więc wykonać funkcję lub hakowanie sprawdzające stan punktów dotyku (naciśnięty ...), stan prostokąta (dodaj właściwość boolowską) i dokonaj alokacji.

Mam nadzieję, że to pomoże, powodzenia.

+0

Jeśli mógłbyś dodać przykład minimalnego kodu QML, byłaby to świetna odpowiedź. – hyde