1
나는 임의의 위치에 항목을 추가 할 수있는 모델을 보여주는 ListView
을 가지고 있습니다.Animate`positionViewAtIndex`
는 지금은
positionViewAtIndex(newIndex, ListView.Visible)
으로, 나의 새로운 항목을보고, 그것에 ListView
를 이동하려고 시도하지만이 변화는 매우 어려운 feeles을 somtimes. som 애니메이션으로 부드럽게 할 수 있습니까?
다소 긴 예제와 함께 재생 : contentX에 대한뿐만 아니라 애니메이션 요소를 추가하여 당신이 그것을 할 수
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow
{
width: 1024
height: 800
visible: true
property int lastAddedIndex: -1
onLastAddedIndexChanged: lv.positionViewAtIndex(lastAddedIndex, ListView.Contain)
Button {
property int num: 10
text: 'Add element: ' + num
onClicked: {
lastAddedIndex = Math.floor(Math.random(num) * lm.count)
lm.insert(lastAddedIndex, { num : this.num })
num++
}
}
ListModel {
id: lm
ListElement { num: 0 }
ListElement { num: 1 }
ListElement { num: 2 }
ListElement { num: 3 }
ListElement { num: 4 }
ListElement { num: 5 }
ListElement { num: 6 }
ListElement { num: 7 }
ListElement { num: 8 }
ListElement { num: 9 }
}
ListView {
id: lv
model: lm
y: 150
width: 800
height: 100
spacing: 2
clip: true
orientation: ListView.Horizontal
delegate: Rectangle {
width: 150
height: 100
border.color: 'black'
color: lastAddedIndex === index ? 'purple' : 'white'
Text {
anchors.centerIn: parent
text: index + ': ' + num
}
}
add: Transition { NumberAnimation { property: 'width'; from: 0; to: 150; duration: 600 } }
}
}
감사 : 지정된 인덱스의 위치에, 그것은 당신에게 부드러운 애니메이션을 제공 할 것입니다. 그것 참 흥미 롭네. 나는'Behavior on contentX'로 시도했지만 실패했다. 이것은 (거의) 작동합니다. 추가 된 요소의 처음 '너비'0으로 인해 단 하나의 결함이 있습니다. 항목이 왼쪽에 추가되면 충분히 스크롤되지 않습니다. 그러나 이것은 관리 할 만합니다. – derM