[solved] item reinizialized when scrolling GridView
-
Hi,
I have a QAbstractListModel as a delegate for a GridView. I would like to make an animation when a new item is added and this work, but when I scroll the view, the items that come visible are like reloaded and the animation will occurs again. I tried different ways, but I didn't get it to work. How could I procede ?
Here some code:
@
ThumbGrid.qml
GridView {
id: gridViewThumb
objectName: "gridViewThumb"
model: listModel
delegate: Thumb {}
}@Thumb.qml
@Rectangle {
id: thumbRect
objectName: "item"+IDscale: 1 NumberAnimation on scale { from: 0.1; to: 1.0 duration: 1000 easing.type: Easing.OutBounce } ...
}@
The listModel is a QAbstractListModel subclass
@class ThumbModelList : public QAbstractListModel
{
Q_OBJECT
public:
enum ThumbRoles {
propertiesRole = Qt::UserRole + 1,
IDRole,
description_row1Role,
...
};ThumbModelList(QObject *parent = 0); ~ThumbModelList(); void addThumb(const ThumbStruct &thumb); int rowCount(const QModelIndex & parent = QModelIndex()) const; QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex &index) const;
private:
QList<ThumbItem*> m_thumbs;};@
and ThumbItems is like this
@class ThumbItem : public QDeclarativeItem
{
Q_OBJECTQ_PROPERTY(ThumbStruct properties READ properties WRITE setProperties NOTIFY propertiesChanged) Q_PROPERTY(int ID READ ID WRITE setID NOTIFY IDChanged) Q_PROPERTY(QString description_row1 READ description_row1 WRITE setDescription_row1 NOTIFY description_row1Changed) ...
public:
ThumbItem(QDeclarativeItem *parent=0);
ThumbItem(const ThumbStruct &properties, QDeclarativeItem *parent=0);int m_ID; QString m_description_row1; ...
signals:
void propertiesChanged();
void IDChanged();
void description_row1Changed();
...
}@I tried to add a boolean animation Q_PROPERTY, but within Thumb.qml I can't see onAnimationChanged signal.
I tried also to put@PropertyAnimation { id:bounce; objectName: "bounce"; target: thumbRect; properties: "scale"; from: 0.1; to: 1; easing.type: Easing.OutBounce }@
inside Thumb.qml, but how to set "bounce.running=true" from c++ ?
Thanks for your time -
I solved the issue Reading [TF] manual :)
using "cacheBuffer":http://doc.qt.nokia.com/4.7-snapshot/qml-gridview.html#cacheBuffer-prop property of GridView
"This property determines whether delegates are retained outside the visible area of the view"but I cannot still handle how to start the animation from c++