Model/View委托组件公共部分
Model/View delegate component common parts
我有一个自定义的 C++ 模型 class,它继承自 QAbstractListModel
. And as a view I use GridView
。
所以GridView
constructs as many components as QAbstractItemModel::rowCount()
。但作为代表我
使用复杂的组件。 "complex" 我的意思是它有动画。
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的公共部分往上移一层,用binding和
忍受信号和槽机制的开销,而不是构造不必要的动画对象
对于所有模型元素?
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
)。是否还有绑定机制运行
背景?还是有什么魔力?
如果这个语法没有任何魔力,更新 属性 仍然依赖于绑定机制,
可能第二种选择更好?
'on' 语法解释如下:http://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html#property-value-sources
我会选择更少的 Animation
个对象,因为现在都是关于缓存友好性的,所以使用更少的内存更好。
第二个选项计算一次动画,而第一个选项对每个项目执行一次。
我有一个自定义的 C++ 模型 class,它继承自 QAbstractListModel
. And as a view I use GridView
。
所以GridView
constructs as many components as QAbstractItemModel::rowCount()
。但作为代表我
使用复杂的组件。 "complex" 我的意思是它有动画。
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的公共部分往上移一层,用binding和 忍受信号和槽机制的开销,而不是构造不必要的动画对象 对于所有模型元素?
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
)。是否还有绑定机制运行
背景?还是有什么魔力?
如果这个语法没有任何魔力,更新 属性 仍然依赖于绑定机制, 可能第二种选择更好?
'on' 语法解释如下:http://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html#property-value-sources
我会选择更少的 Animation
个对象,因为现在都是关于缓存友好性的,所以使用更少的内存更好。
第二个选项计算一次动画,而第一个选项对每个项目执行一次。