3

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

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

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

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

4

1 回答 1

3

这段代码会做到这一点。基本上,您需要创建一个虚拟委托项目,然后在其中创建另一个具有相同宽度、高度、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" } )
            }
        }

    }
}
于 2011-05-29T11:49:12.847 回答