QT MultiPointTouchArea不起作用

时间:2013-07-03 10:25:14

标签: qt mouse gesture

我正在努力让MultiPointTouchArea工作......我在QT上找到了一个非常基本的例子:

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未被禁用,因此它应该有效吗?或者我错了吗?

1 个答案:

答案 0 :(得分:2)

我在我的Android平板电脑上尝试了你的代码,它运行得很好。第一个手指控件移动绿色矩形,第二个手指移动黄色矩形。我在Qt 5.4(最新截至目前)

您是在平板电脑还是台式电脑上运行此示例?如果您使用普通鼠标在桌面上,则只能在按住鼠标左键的同时移动绿色矩形。触摸需要鼠标按下才能工作。

你到底想要达到什么目的?看起来你真正想要的是一个将hoverEnabled设置为true的MouseArea。

试试这个:

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