一、效果预览
二、源码分享
import QtQuick
import QtQuick.Controls
ApplicationWindow {
visible: true
width: 640
height: 480
title: "Test"
property int cnt:cnt = model.count
ListModel{
id:model
ListElement{index:0}
ListElement{index:1}
ListElement{index:2}
ListElement{index:3}
}
GridView{
id:gridView
anchors.fill: parent
model: model
cellWidth: 50
cellHeight: 50
anchors.margins: 20
delegate: delegateModel
onAddChanged: console.log("add")
}
Component{
id:delegateModel
Rectangle{
id:wapper
width: 40
height: 40
color: "red"
required property int index
Text {
anchors.fill: parent
text: index
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font{
pixelSize: 16
bold:true
}
}
GridView.onAdd:{
console.log("add")
addAnim.start()
}
GridView.onRemove:{
console.log("remove")
removeAnim.start()
}
ScaleAnimator{
id:addAnim
target: wapper
from:0
to:1
duration: 200
}
SequentialAnimation{
id:removeAnim
PropertyAction{
target: wapper
property: "GridView.delayRemove"
value:true
}
ScaleAnimator{
target: wapper
from:1
to:0
duration: 200
}
PropertyAction{
target: wapper
property: "GridView.delayRemove"
value:false
}
}
MouseArea{
anchors.fill: parent
onClicked: {
model.remove(index)
cnt--
}
}
}
}
Button{
anchors.bottom: parent.bottom
width: parent.width
height: 40
onClicked: {
var data = {index:cnt}
model.append(data)
cnt++
}
}
}
三、源码解析
1、添加动画
GridView.onAdd:{
console.log("add")
addAnim.start()
}
ScaleAnimator{
id:addAnim
target: wapper
from:0
to:1
duration: 200
}
2、删除动画
GridView.onRemove:{
console.log("remove")
removeAnim.start()
}
SequentialAnimation{
id:removeAnim
PropertyAction{
target: wapper
property: "GridView.delayRemove"
value:true
}
ScaleAnimator{
target: wapper
from:1
to:0
duration: 200
}
PropertyAction{
target: wapper
property: "GridView.delayRemove"
value:false
}
}
原文地址:https://blog.csdn.net/qq_15181569/article/details/134710949
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_35414.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。