«Ожидаемый токен», «при использовании свойства перехода внутри обработчика сигнала в QML - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу сделать переход для Rectangle в случае наведения мыши. Я следовал этого урока и создал MouseArea следующим образом:

MouseArea{
        anchors.fill: parent
        hoverEnabled: true
        onEntered: {
            rMT.color = 'red'                    // rMT is my rectangle's id (rectangle_mouse_tracking)
            transitions: Transition {            // Expected token ','
                NumberAnimation {
                    property : "width"
                    easing.type: Easing.InOutQuad
                    duration : 200
                }
            }
        }
    ...
    ...

* Есть и другие возможные способы создания анимации, но я хочу знать, что не так с приведенным выше кодом?

В настоящее время я новичок в QML. Извините, если вопрос немного глупый.

Спасибо.

1 Ответ

1 голос
/ 30 апреля 2020

Анимации, определенные в переходах, выполняются при изменении свойства.

Если вы хотите, чтобы анимация выполнялась при изменении width, измените ширину в onEntered и будет выполнен переход, определенный в Rectangle.

Синтаксическая ошибка из-за того, что transitions должно быть в Rectange {} не в onEntered {}

import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick 2.0
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Rectangle {
        id: rMT
        width: 400
        height:400
        x:0
        color: 'blue'
        border.color: 'black'
        MouseArea{
            anchors.fill: parent
            hoverEnabled: true
            onEntered: {
                rMT.color = 'red'
                rMT.width = 100
            }
        }
        transitions: Transition{
            NumberAnimation {
                property : "width"
                from: 400
                easing.type: Easing.InOutQuad
                duration : 2000
            }

        }

    }
}
...