#qt #qml
#qt #qml
Вопрос:
Согласно документации по анимации в разделе «Анимация по умолчанию как поведение», они говорят, что
Существует несколько способов присвоения анимации поведения свойствам.
Один из них заключается в том, что мы должны иметь возможность использовать Behaviour
без on property
, но мне не удается заставить его работать.
Вот мой пример кода. У меня есть цветной круг, и изменение цвета должно вызвать ColorAnimation, но это не так
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Rectangle {
width: 75; height: 75; radius: width
id: ball
color: "salmon"
Behavior {
ColorAnimation { target: ball; duration: 100 }
}
}
Component.onCompleted: timer.start()
Timer{
id: timer
onTriggered: {ball.color = "blue" }
interval: 1000
}
}
Если я добавлю on color
, это сработает. Я также пытался добавить property: "color"
в ColorAnimation
определение, но ничего не происходит.
Комментарии:
1. Похоже, что это страница документации, которая имеет тенденцию быть ошибочной. Некоторое время назад была исправлена очень похожая ошибка: bugreports.qt.io/browse/QTBUG-11599
2.
Behavior
В вашем примере это не имеет смысла. Оно должно быть связано с каким-либо свойством, но в вашем случае это не так. Что, если элемент имеет несколько свойств «цвета»? Почему, кстати, вы хотите, чтобы это было без ключевого слова «on»?3. Следует ли отправить ошибку в этот файл документа:
qtdeclarative/src/quick/doc/snippets/qml/animation.qml
4. @folibis: просто потому, что так написано в документации. doc.qt.io/qt-5/qtquick-statesanimations-animations.html — раздел: Анимация по умолчанию как поведение.
5. Я тоже этого не понимаю, как я должен использовать поведение без синтаксиса on? Ошибка открыта с 13: (
Ответ №1:
После более подробного просмотра документов я не думаю, что есть другой способ указать свойство для поведения в QML, хотя документы animation предполагают это.
Поведение — это тип модификатора свойства, более конкретный перехватчик записи значения свойства. В настоящее время поведение является единственным, см.:
Ответ №2:
Запись Behavior
без on <property>
единственного определяет новый Behavior
компонент. Чтобы использовать его, оно должно быть применено к свойству. Код из документации Qt 5:
// FadeBehavior.qml
import QtQuick 2.15
Behavior {
...
}
Затем используйте это Behavior
:
Text {
FadeBehavior on text {}
}