Как применить PropertyChanges к свойству с именем «target»

#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'

    }
}