Ho un MouseArea che desidero iniziare centrato e quindi avere una posizione assoluta una volta che i tasti su/giù/sinistra/destra sono premuti. Il mio problema è che non so come cancellare l'ancoraggio sul MouseArea in modo che posso specificare una posizione assoluta:Cancella ancoraggio QML
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
}
}
}
}
In un primo momento ho solo provato a installare mouseArea.anchors
-undefined
ma ho ottenuto un errore circa anchors
essere un proprietà di sola lettura. Ho quindi scoperto AnchorChanges, ma non riesco a trovare un modo per rimuovere/cancellare l'ancora; l'impostazione di anchors.bottom
ecc. a undefined
non funziona.
Docs (http://qt-project.org/doc/qt-4.8/qml-anchor-layout.html) ha dichiarato "Se desideri passare dall'ancoraggio al posizionamento assoluto, puoi cancellare un'ancora valore impostandolo su 'undefined'". – sergk