QtQuick GridView元素动画

时间:2011-04-10 18:08:16

标签: gridview qt4 qml qt-quick

当调整GridView的大小并重新排列元素时,这些元素的动画似乎不起作用。

在这里您可以找到一个简单的例子:http://pastebin.com/BgST6sCv
如果单击示例中的某个方块,则会正确触发动画。 但是如果您调整窗口大小以便GridView必须重新排列它的元素,则不会触发动画。

有没有办法解决这个问题?可能没有任何C ++?

编辑:
我正在使用目前包含Qt 4.7.3的Qt SDK 1.1

1 个答案:

答案 0 :(得分:2)

此代码将执行此操作。基本上,您需要创建一个虚拟委托项,然后在其中创建具有相同宽度,高度,x和y值的另一个项。将内部项的父级设置为网格视图。这是你的代码修改为很好的动画。

import QtQuick 1.0

Rectangle {
    id: mainRect
    width: 300; height: 400

    ListModel {
        id: appModel
        ListElement { modelcolor: "#FF0000"}
        ListElement { modelcolor: "#00FF00"}
        ListElement { modelcolor: "#0000FF"}
    }

    Component {
        id: appDelegate

        Item {
            id: main
            width: grid.cellWidth; height: grid.cellHeight
            Rectangle {
                id: item; parent: grid
                x: main.x; y: main.y
                width: main.width; height: main.height;
                color: modelcolor
                Behavior on x { NumberAnimation { duration: 400; easing.type: Easing.OutBack } }
                Behavior on y { NumberAnimation { duration: 400; easing.type: Easing.OutBack } }
            }
        }
    }

    GridView {
        id: grid
        anchors.fill: parent
        model: appModel
        delegate: appDelegate
        interactive: false
        MouseArea {
            anchors.fill: parent
            onClicked: {
                appModel.insert(1, { "modelcolor": "yellow" } )
            }
        }

    }
}