2

我正在尝试让 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 没有被禁用所以它应该工作?还是我错了?

4

1 回答 1

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
    }
}
于 2014-12-24T14:46:15.847 回答