Очистить привязку QML

У меня есть MouseArea, которую я хочу начать со смещения по центру, а затем иметь абсолютную позицию, как только клавиши вверх/вниз/влево/вправо будут нажал. Моя проблема в том, что я не знаю, как очистить привязку к MouseArea, чтобы указать абсолютную позицию:

import QtQuick 2.0
import QtQuick.Window 2.0

Window {
    id: screen
    width: 360
    height: 360
    visible: true

    Rectangle {
        anchors.fill: parent

        states: [
            State {
                name: "moved"
                AnchorChanges {
                    target: mouseArea
                    anchors.bottom: undefined
                    anchors.left: undefined
                    anchors.right: undefined
                    anchors.top: undefined
                }
            }
        ]

        MouseArea {
            id: mouseArea
            anchors.centerIn: parent
            width: 250
            height: 250
            focus: true
            onClicked: console.log("clicked!")
            onPositionChanged: console.log("position changed!")

            function moveMouseArea(x, y) {
                mouseArea.x += x;
                mouseArea.y += y;
                mouseArea.state = "moved";
                mouseAreaPosText.text = 'Mouse area was moved... new pos: '
                    + mouseArea.x + ', ' + mouseArea.y;
            }

            Keys.onPressed: {
                if (event.key === Qt.Key_Up)
                    moveMouseArea(0, -1);
                if (event.key === Qt.Key_Down)
                    moveMouseArea(0, 1);
                if (event.key === Qt.Key_Left)
                    moveMouseArea(-1, 0);
                if (event.key === Qt.Key_Right)
                    moveMouseArea(1, 0);
            }

            Rectangle {
                anchors.fill: parent
                border.width: 2
                border.color: "black"
                color: "transparent"
            }

            Text {
                id: mouseAreaPosText
                anchors.centerIn: parent
            }
        }
    }
}

Сначала я просто попытался установить mouseArea.anchorsв undefined, но получил ошибку о том, что привязкиявляются свойством только для чтения. Затем я обнаружил AnchorChanges, но не могу найти способ удалить/очистить привязку; установка anchors.bottomи т.д. на undefinedне работает.

22
задан Mitch 9 January 2018 в 10:55
поделиться