Qt 临时禁用(忽略/不显示)复杂QML组件上的动画

Qt 临时禁用(忽略/不显示)复杂QML组件上的动画,qt,qml,Qt,Qml,是否可以临时禁用(忽略/不显示)复杂QML组件上的动画,直到某个时间点?然后激活动画并像往常一样工作 比如说。QML上的一个复杂页面显示对象的数据,其中有许多小动画。更改数据对象时,应忽略这些动画 Rectangle { anchors.fill: parent property variant cppViewModel: MyCppViewModel { onBeforDataObjectChanged: { }

是否可以临时禁用(忽略/不显示)复杂QML组件上的动画,直到某个时间点?然后激活动画并像往常一样工作

比如说。QML上的一个复杂页面显示对象的数据,其中有许多小动画。更改数据对象时,应忽略这些动画

Rectangle {
    anchors.fill: parent
        property variant cppViewModel: MyCppViewModel {
            onBeforDataObjectChanged: {

            }
            onAfterDataObjectChanged: {

            }
        }

    Rectangle {
        id: idRect1
        Behavior on x { NumberAnimation { ... }}
        Behavior on y { NumberAnimation { ... }}
        x: cppViewModel.dataObject.offsetX
        y: cppViewModel.dataObject.offsetY
        scale: cppViewModel.dataObject.scale

        Rectangle {
            id: idRect2

            width: cppViewModel.dataObject.width
            heigth: cppViewModel.dataObject.heigth
            Behavior on width { NumberAnimation { ... }}
            Behavior on heigth { NumberAnimation { ... }}

            ColumnLayout {
                Rectangle {
                    Layout.preferredHeight: 100 * cppViewModel.dataObject.width1
                    Behavior on Layout.preferredHeight { NumberAnimation { duration: 500; easing.type: Easing.OutQuad; }}
                    //... Any number of children with animation
                }
            }
        }
    }

    PropertyAnimation { target: idRect1; property: "scale"; from: 0.9; to: 1.0; ... }
}

如果当前数据对象的属性值更改,则需要动画。如果整个对象更改为另一个对象,则需要阻止动画。

要禁用
动画
s,有多种方法,正确的方法取决于
动画
的启动方式

如果通过设置启动
动画
,则只需添加
和&animationEnabled
对于条件,其中
animationEnabled
是一个属性,您必须在其他地方定义并相应地切换它

如果使用函数:
run()
启动
动画
,解决方案是,不要这样做

如果在
行为中使用
动画
,则可以使用来停用
行为
及其
动画

最后,我可以想到
Transition
s。正如
行为
,-property一样,禁用它


我希望我没有忘记制作动画的方法,你会为你的问题找到合适的解决方案

嗨,你能帮我写一些代码来帮助我想象吗?但我认为答案是肯定的。在真实代码中有2000多行。所以这是关于那些
行为
s?关于动画的问题。示例可以在没有Benaviers的情况下重写。也就是说,将使用PropertyAnimation来代替它们。这完全取决于启动动画的方式,解决方案是,不启动动画。我希望我在答复中涵盖了你的情况。如果不是,请告诉我,哪种情况,那是解决不了的,我已经忘记了。