#qml
#qml
Вопрос:
Вот пример State
и PropertyChanges
из документов:
State {
name: "resized"; when: mouseArea.pressed
PropertyChanges { target: rect; color: "blue"; height: container.height }
}
Объект для изменения идентифицируется в target
свойстве, а другие свойства PropertyChanges
сопоставляются 1-к-1 со свойствами целевого объекта.
Но если кто-то хочет изменить свойство с именем target
on foo
на bar
, наивной вещью было бы PropertyChanges { target: foo; target: bar }
, что, я уверен, не сработало бы.
Есть ли способ устранить неоднозначность цели PropertyChanges
от цели ее назначения?
Ответ №1:
С небольшой настройкой это не проблема. Если вы не можете присвоить ему псевдоним при создании targetobject самостоятельно, сделайте это в состояниях, подобных so:
Rectangle {
id: rect
property int target: 20
x: target
y: target
width: target
height: target
color: 'orchid'
states: State {
id: altState
name: 'alternative'
property alias mytarget: rect.target
PropertyChanges {
target: altState
mytarget: 50
}
}
MouseArea {
anchors.fill: parent
onClicked: parent.state = 'alternative'
}
}