2013-07-03 50 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