2013-12-17 79 views
9

我正在嘗試編寫多點觸控桌面應用程序。我有一個基於QML的應用程序,現在我試着同時拖動多個QML元素。創建多點觸控Qt 5.1應用程序

我試着用MultiPointTouchArea,但是這沒有用。所以我得到了2個元素。例如2張圖片,應該由兩個不同的人同時拖動。

如果我定義一個包含MultiPointTouchArea的矩形,並且將一個touchPoint鏈接到每張圖片,則第一個觸摸事件將移動第一個圖片,第二個觸摸事件移動第二個圖片。

就像這個例子代碼:

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

這不是我要找的。我希望他們如果同時觸摸並拖動它們,而不會互相干擾,也不會觸摸事件的順序。 這是可能的qml?或者我必須編寫一個C++函數?

我希望你能理解我的問題。

回答

2

我是新來MultiPointTouchArea,做一些調查,看來你得動態分配(i)點到最初觸摸矩形(J)

在你的榜樣,你正在做一個靜態分配:

矩形(綠色)將按照點1,因爲你這樣做

x: point1.x 
    y: point1.y 

矩形(黃色),將按照點2,因爲你這樣做

x: point2.x 
    y: point2.y 

--->綠色矩形永遠不會遵循點1和黃色一個永遠不會遵循點2.

MultiPointTouchArea有一個您定義的觸摸點陣列,第一個觸摸手勢來自第一個觸摸點等等。

所以你必須做一個函數或一些黑客檢查觸摸點狀態(按...),矩形狀態(添加一些布爾屬性)並進行分配。

希望這會有所幫助,祝你好運。

+0

如果你可以添加一個最小的QML代碼示例,這將是非常好的答案。 – hyde