2013-12-17 7 views
9

Ich versuche, eine Multitouch-Desktop-Anwendung zu schreiben. Ich habe eine QML-basierte Anwendung und jetzt versuche ich, mehr als ein QML-Element gleichzeitig zu ziehen.Erstellen Sie eine Multi-Touch-Qt 5.1-Anwendung

Ich habe versucht, MultiPointTouchArea zu verwenden, aber das does't't't arbeiten. Also habe ich 2 Elemente bekommen. Zum Beispiel 2 Bilder, die von zwei verschiedenen Personen gleichzeitig gezogen werden können.

Wenn ich ein Rechteck mit dem MultiPointTouchArea definiere und ich ein touchPoint mit jedem Bild verknüpfe, verschiebt das erste Berührungsereignis das erste Bild und das zweite Berührungsereignis das zweite Bild.

wie in diesem Beispielcode:

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 
    } 
} 

Das ist nicht das, was ich suche. Ich möchte, dass sie sich bewegen, wenn sie beide gleichzeitig berührt und geschleift werden, ohne sich gegenseitig zu stören und ohne eine Reihenfolge von Berührungsereignissen. Ist das in qm möglich? Oder muss ich eine C++ Funktion codieren?

Ich hoffe, Sie verstehen mein Problem.

Antwort

2

Ich bin neu in MultiPointTouchArea und eine Untersuchung zu tun, scheint es, dass Sie haben dynamisch zuweisen die Punkt (i) die ersten Rechteck berühren (j).

In Ihrem Beispiel tun Sie eine statische Zuordnung:

Rechteck (grün) point1 folgen, weil Sie so

x: point1.x 
    y: point1.y 

Rectangle (gelb) point2 folgen zu tun, weil Sie so tun,

x: point2.x 
    y: point2.y 

---> Green Rechteck wird nie Punkt folgen 1 und das gelbe man nie Punkt 2.

folgen 0

MultiPointTouchArea verfügt über eine Reihe von Berührungspunkten, die Sie definieren, die erste Berührungsgeste, die mit dem ersten Berührungspunkt geliefert wird, und so weiter.

Sie müssen also eine Funktion oder einen Hacker machen, der den Status der Berührungspunkte überprüft (gedrückt ...), den Zustand des Rechtecks ​​(eine boolesche Eigenschaft hinzufügen) und die Zuweisung durchführt.

Hoffe, das wird helfen, viel Glück.

+0

Wenn Sie einen minimalen QML-Codebeispiel hinzufügen könnten, wäre dies eine ziemlich gute Antwort. – hyde