我有一个继承自QAbstractListModel
的自定义c ++模型类。作为一种观点,我使用GridView
。
因此GridView
构建与QAbstractItemModel::rowCount()
一样多的组件。但作为代表我
使用复杂的组件。随着"复杂"我的意思是它有动画。
property bool animate: false
delegate: Rectangle {
SequentialAnimation on color {
running: view.animate
loops: Animation.Infinite
ColorAnimation { from: "blue"; to: "#33FFFF"; duration: 1200 }
ColorAnimation { from: "#33FFFF"; to: "blue"; duration: 1200 }
}
}
我想问的是,我是否应该将代理的公共部分向上移动一层并使用绑定和 忍受信号和插槽机制开销,而不是构建不必要的动画对象 对于所有模型元素?
delegate: Rectangle {
color: view.delegateColorAnimation
}
property bool animate: false
property color delegateColorAnimation
SequentialAnimation on delegateColorAnimation {
running: animate
loops: Animation.Infinite
ColorAnimation { from: "blue"; to: "#33FFFF"; duration: 1200 }
ColorAnimation { from: "#33FFFF"; to: "blue"; duration: 1200 }
}
我知道信号和插槽机制开销可以忽略不计但我很困惑因为特殊
动画的语法(Animation on property
)。还有一个绑定机制在运行
背景?或者有什么魔法吗?
如果此语法没有任何魔法,更新属性仍然依赖于绑定机制, 可能第二种选择会更好吗?
答案 0 :(得分:1)
这里解释了'on'语法:http://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html#property-value-sources
我会选择更少的Animation
个对象,因为现在它都是关于缓存友好性的,所以通过更少的内存会更好。
第二个选项计算动画一次,而第一个选项按每个项目计算。