2011-04-10 27 views
2

當調整GridView的大小並重新排列元素時,該元素的動畫似乎不起作用。QtQuick GridView元素動畫

在這裏您可以找到一個簡單示例:http://pastebin.com/BgST6sCv
如果點擊示例中的其中一個正方形,則會正確觸發動畫。 但是,如果您調整窗口大小,以便GridView必須重新排列其元素,則不會觸發動畫。

有沒有辦法解決這個問題?可能沒有任何C++?

編輯:
我使用Qt SDK 1.1包含的Qt 4.7.3此刻

回答

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" }) 
      } 
     } 

    } 
} 
+0

我在幾個地方發現了類似的解決方案,但沒有解釋。你爲什麼需要這個虛擬代表? – meolic 2012-09-04 08:52:44

+0

它可以工作,但是然後GridView不再可以滑動。 – 2015-08-15 10:18:21