gpt4 book ai didi

c++ - 模型/ View 委托(delegate)组件公共(public)部分

转载 作者:行者123 更新时间:2023-11-30 05:25:11 28 4
gpt4 key购买 nike

我有一个自定义的 C++ 模型类,它继承自 QAbstractListModel .作为一个 View ,我使用 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的公共(public)部分往上移一层,用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 )。是否还有绑定(bind)机制在运行背景?还是有什么魔力?

如果这个语法没有任何魔力,并且更新属性仍然依赖于绑定(bind)机制,可能第二种选择更好?

最佳答案

此处解释了“on”语法:http://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html#property-value-sources

我会选择更少的 Animation 对象,因为现在一切都与缓存友好有关,所以使用更少的内存会更好。

第二个选项计算一次动画,而第一个选项对每个项目执行一次。

关于c++ - 模型/ View 委托(delegate)组件公共(public)部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com