асинхронная (вид) анимация в qml - PullRequest
0 голосов
/ 27 апреля 2011

допустим, у меня есть следующие компоненты QML:

Foo.qml

import Qt 4.7

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

Bar.qml

import Qt 4.7

Rectangle {
  property string barProp: ""

  Text {
    text: barProp

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

Я поддерживаю myModel из C ++, он имеет следующее объявление Q_PROPERTY:

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

Теперь моя проблема в том, что каждый раз, когда я добавляю новый элемент в базовый QList, анимация, указанная в Bar, сбрасывается, поэтому на практике элементы всегда полностью перекрываются. Я хочу, чтобы анимации элементов не были синхронными, и каждая из них могла бы продолжаться безотносительно независимо от остальных. Можно ли это сделать?

Приветствия

1 Ответ

1 голос
/ 28 апреля 2011

Вы должны использовать QAbstractItemModel (QStandardItemModel может быть самым простым), а не QList.QAbstractItemModel уведомляет представление, когда новые элементы вставляются / удаляются / перемещаются, и представление реагирует соответствующим образом, изменяя его содержимое.Напротив, представление ничего не знает об изменениях, внесенных в QList;только что что-то изменилось.Это означает, что у списка нет другого выбора, кроме как уничтожить и воссоздать всех делегатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...