Как создать фигуру, которая перемещается по контуру круга в QML - PullRequest
0 голосов
/ 18 января 2020

Я использую QT 5.11.3 и у меня большая проблема ...

Я хочу реализовать форму, которая перемещается по контуру (или указанному c пути) круга, используя перетаскивание мышью.

Я ссылался на пример в ссылке ниже.
Как сделать так, чтобы элемент перетаскивался внутри круга в QML?

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    id: root
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    property int radius: 100

    Rectangle {
        id: circle
        width: 2 * radius
        height: 2 * radius
        radius: root.radius

        color: 'blue'
    }

    Rectangle {
        id: mark
        width: 20
        height: 20
        x: (dragObj.dragRadius <= root.radius ? dragObj.x : root.radius + ((dragObj.x - root.radius) * (root.radius / dragObj.dragRadius))) - 10
        y: (dragObj.dragRadius <= root.radius ? dragObj.y : root.radius + ((dragObj.y - root.radius) * (root.radius / dragObj.dragRadius))) - 10
        color: 'red'

        MouseArea {
            id: markArea
            anchors.fill: parent
            drag.target: dragObj
            onPressed: {
                dragObj.x = mark.x + 10
                dragObj.y = mark.y + 10
            }
        }
    }

    Item {
        id: dragObj
        readonly property real dragRadius: Math.sqrt(Math.pow(x - root.radius, 2) + Math.pow(y - root.radius, 2))
        x: root.radius
        y: root.radius

        onDragRadiusChanged: console.log(dragRadius)
    }
}

Но MouseArea был перемещен не только к контуру круга, но и к внутренней части круга.

Если у вас есть пример перемещения по контуру фигуры с помощью MouseArea или перетаскивания мышью, сообщите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...