在QML中的各种动态加载的组件中使用Image

时间:2016-08-11 10:30:13

标签: qt qml qtquick2

我想要达成的目标:
切换项目的外观,其中描述外观的组件是动态加载的,但常见元素不会多次加载。

让我们说,我有一个带有图标(例如封面)和标题(例如音乐标题)的元素列表。
单击/拖动时,它会移动形状,因此可以显示其他信息(例如,持续时间,艺术家......) 最后我有一个DropArea,我可以删除这些元素。在这里,我只想显示图标。

正确告知我,不建议预先加载所有三个表单,只移动其他对象的可见性和其他参数,因为第一个列表是ListView。 因此,我决定创建多个组件,然后使用Loader加载它们 另一方面,这会导致一些开销,因为我加载和卸载Icon,这是所有组件共有的,每次,形状都会发生变化。

到目前为止,我的解决方案是,将图像加载到组件之外,每次重新生成它,形状会发生变化。然而,这感觉很奇怪,而且我不确定,如果这可能不是表现较差的方式,那么“同时加载所有内容并重置可见性和定位器”-approach

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

对于效率方面,性能最强的应该是只动态加载真正动态的东西,并使其他东西保持静态(或称为声明性)。在你的应用程序中,我认为图标应该是声明性的。

关于重新显示,实际上重新父母化在Qt Quick编程中非常普遍,特别是在动态加载上下文中。 Qt Quick中的父级与QObject的概念不同。它只是视觉管理(而不是内存管理)。这就是为什么你可以看到Qt Quick甚至在State / Transition中提供ParentChange。