当 GridView 调整大小并且它的元素重新排列时,这些元素的动画似乎不起作用。
在这里您可以找到一个简单的示例: http: //pastebin.com/BgST6sCv
如果单击示例中的其中一个方块,动画就会正确触发。但是,如果您调整窗口大小以使 GridView 必须重新排列其元素,则不会触发动画。
有没有办法解决这个问题?可能没有任何C++?
编辑:
我目前正在使用包含 Qt 4.7.3 的 Qt SDK 1.1
当 GridView 调整大小并且它的元素重新排列时,这些元素的动画似乎不起作用。
在这里您可以找到一个简单的示例: http: //pastebin.com/BgST6sCv
如果单击示例中的其中一个方块,动画就会正确触发。但是,如果您调整窗口大小以使 GridView 必须重新排列其元素,则不会触发动画。
有没有办法解决这个问题?可能没有任何C++?
编辑:
我目前正在使用包含 Qt 4.7.3 的 Qt SDK 1.1
这段代码会做到这一点。基本上,您需要创建一个虚拟委托项目,然后在其中创建另一个具有相同宽度、高度、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" } )
}
}
}
}