无法将 Qt3DCore::Quick::Quick3DEntity 分配给 QQmlComponent
Posted
技术标签:
【中文标题】无法将 Qt3DCore::Quick::Quick3DEntity 分配给 QQmlComponent【英文标题】:Unable to assign Qt3DCore::Quick::Quick3DEntity to QQmlComponent 【发布时间】:2020-11-23 09:42:04 【问题描述】:尝试向自定义 Qt3D 实体添加类似委托的属性:
MyEntity.qml:
Entity
id: root
default property Entity delegate // <-- MyEntity.qml:26
property int n: 1
property matrix4x4 t
NodeInstantiator
id: rep
model: root.n
delegate: Entity
components: [
Transform
matrix:
var m = root.t
for(var i = 1; i < rep.index; i++)
m = m.times(root.t)
return m
]
NodeInstantiator
delegate: root.delegate
用法:
MyEntity
t: Qt.matrix4x4(
1, 0, 0, 0.1,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
)
n: 5
Entity ...
结果:
qrc:/MyEntity.qml:26:17:
【问题讨论】:
你如何分配给root.delegate
?请提供minimal reproducible example。
delegate
是MyEntity
的默认属性。在第二个代码块(用法)中,它在最后一行(Entity ...
)中分配。我可以明确地做到这一点,即MyEntity delegate: Entity ...
,同样的事情。
你的问题不清楚,但可能你分配了 Item (一个实例)而不是 component (一个类型)。
@folibis 问题很清楚,最小且可重复:只需将我的代码粘贴到任何 Qt3D 空应用程序中,我不需要在此处包含它,因为它太长了。顺便说一句,你的猜测是错误的。
【参考方案1】:
属性声明:
default property Entity delegate
必须改为:
default property Component delegate
正常工作。
【讨论】:
以上是关于无法将 Qt3DCore::Quick::Quick3DEntity 分配给 QQmlComponent的主要内容,如果未能解决你的问题,请参考以下文章
无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS