0

假设我有以下 QML 组件:

Foo.qml

import Qt 4.7

Rectangle {
  Repeater {
    model: myModel
    delegate: Bar {
      barProp: elemProp
    }
  }
}

条形.qml

import Qt 4.7

Rectangle {
  property string barProp: ""

  Text {
    text: barProp

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

我从 C++ 维护 myModel,它具有以下 Q_PROPERTY 声明:

Q_PROPERTY (QDeclarativeListProperty <Bar> myModel READ myModel
            NOTIFY myModelChanged)

现在,我的问题是每次我向底层添加一个新元素时,重置中QList指定的动画Bar,所以在实践中,元素总是完全重叠的。我想要的是元素动画不是同步的,并且每个动画都可以无缝地继续,而不管其余的。这可能吗?

干杯

4

1 回答 1

1

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

于 2011-04-27T23:39:26.630 回答