2013-07-03 81 views
2

我試圖讓MultiPointTouchArea工作...我發現QT真正簡單的例子:QT MultiPointTouchArea不起作用

http://qt-project.org/doc/qt-5.0/qtquick/qml-qtquick2-multipointtoucharea.html

import QtQuick 2.0 

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

但是,如果我移動鼠標,什麼也沒有發生...位置一直是x = 0,y = 0但文檔告訴我:「Item :: enabled屬性用於啓用和禁用觸摸處理。禁用時,觸摸區域對於鼠標/觸摸變得透明事件「。因此,MultiPointTouchArea沒有被禁用,所以它應該工作?或者我錯了?

回答

2

我在你的Android平板電腦上試用了你的代碼,它工作得很好。第一手指控件移動綠色矩形,第二手指移動黃色矩形。我在Qt 5.4(最新的截至目前)

你在平板電腦或臺式電腦上運行這個例子嗎?如果您使用普通鼠標在桌面上,則只能在按住鼠標左鍵的同時移動您的綠色矩形。觸摸需要鼠標按下才能工作。

你究竟想達到什麼目的?它看起來像你真正想要的是一個MouseArea的hoverEnabled設置爲true。

試試這個:

import QtQuick 2.0 

Rectangle { 
    width: 400; height: 400 

    property point point1; 
    property point point2; 

    MouseArea { 
     anchors.fill: parent 
     hoverEnabled: true 

     onPositionChanged: { 
      if (pressed) 
      { 
       parent.point1.x = mouse.x; 
       parent.point1.y = mouse.y; 
      } 
      else 
      { 
       parent.point2.x = mouse.x; 
       parent.point2.y = mouse.y; 
      } 
     } 
    } 

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

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

謝謝你的答案:) – mkl