我有两个 qml,其中一个包含动画,即animation.qml,另一个包含数据,即 data.qml。
我想运行我的animation.qml来对data.qml中的内容进行动画处理,为此我想访问另一个模型中的QProperty的QString。
如何达到同样的效果?
我尝试为已定义的属性创建别名,但它无法使用语法工作
property alias differentNameForProperty: currentNameOftheProperty
提前谢谢您。
这是一个例子,
标记.qml
Item {
Student {
id: student
}
Item {
SequentialAnimation {
id: animination1
NumberAnimation {
duration: 1250
target: student
property: student.newMarks
from: 0
to: 100
}
}
}
Connections {
target: marksModel
function onCallMarks() {
animination1.start()
}
}
}
学生.qml
Item {
id: id_parent
property double oldMarks: 10
property alias newMarks: oldMarks
// Using oldMarks to toggle
// the visibility of elements
}
当动画从 Marks.qml 运行时
newMarks
。 oldMarks
的更改将发生在 Student.qml 中,并且将播放动画。
我希望我的解释很清楚。
谢谢
我不知道这是否是你想要的......你的例子并没有真正起作用,所以我将它精简为一个可以运行的版本,但它可能不是你想要的。
您的示例在
property
中的 NumberAnimation
属性存在问题。此属性属于类型string
。所以你真正想要写的是 property: "newMarks"
不需要 id 前缀,因为这已经通过 target
属性完成了。
import QtQuick
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
component Student: Rectangle {
id: internal
property double oldMarks: 10
property alias newMarks: internal.oldMarks
width: 100
height: 100
color: "red"
// Using oldMarks to toggle the visibility of elements
opacity: internal.oldMarks
}
Student {
id: student
anchors.centerIn: parent
}
SequentialAnimation {
id: animation
NumberAnimation {
duration: 2500
target: student
property: "newMarks"
from: 0
to: 1
}
}
Component.onCompleted: animation.start()
}