Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt qml中的异步(类)动画_Qt_Animation_Qml - Fatal编程技术网

Qt qml中的异步(类)动画

Qt qml中的异步(类)动画,qt,animation,qml,Qt,Animation,Qml,假设我有以下QML组件: Foo.qml import Qt 4.7 Rectangle { Repeater { model: myModel delegate: Bar { barProp: elemProp } } } import Qt 4.7 Rectangle { property string barProp: "" Text { text: barProp NumberAnimation on x {

假设我有以下QML组件:

Foo.qml

import Qt 4.7

Rectangle {
  Repeater {
    model: myModel
    delegate: Bar {
      barProp: elemProp
    }
  }
}
import Qt 4.7

Rectangle {
  property string barProp: ""

  Text {
    text: barProp

    NumberAnimation on x {
      from: 0; to: 100
      duration: 1000
      loops: Animation.Infinite
    }
  }
}
条形图qml

import Qt 4.7

Rectangle {
  Repeater {
    model: myModel
    delegate: Bar {
      barProp: elemProp
    }
  }
}
import Qt 4.7

Rectangle {
  property string barProp: ""

  Text {
    text: barProp

    NumberAnimation on x {
      from: 0; to: 100
      duration: 1000
      loops: Animation.Infinite
    }
  }
}
我从C++中维护MyMault模型,它具有以下QQ:Fuffic声明:

Q_PROPERTY (QDeclarativeListProperty <Bar> myModel READ myModel
            NOTIFY myModelChanged)
Q_属性(QDeclarativeListProperty myModel读取myModel
通知MyModel(已更改)
现在,我的问题是每次我向基础
QList
添加新元素时,
Bar
中指定的动画都会重置,因此在实践中,元素总是完全重叠。我想要的是,元素动画不是同步的,并且无论其他动画如何,每个动画都可以无缝地继续。这可能吗


干杯

您应该使用QAbstractItemModel(QStandardItemModel可能最简单),而不是QList。QabstracteModel在插入/删除/移动新项时通知视图,并且视图通过修改其内容做出适当反应。相反,视图对QList所做的更改一无所知;只是有些事情改变了。这意味着列表别无选择,只能销毁并重新创建所有委托