Я создаю 3D-композитор QtWayland, а при размещении ShellSurfaceItems на плоскости Qt3D я использую NodeInstantiator. При этом регистрируются все свойства, кроме сущностей на моем Scene2D (что я использую для отображения 2D ShellSurfaceItem на трехмерной плоскости)
Я пробовал все, начиная от установки свойства entity при загрузке компонента и заканчивая созданием вручную моих пользовательских компонентов Panel (все QML). Сущности просто не связываются с обработчиками событий в Scene2D
NodeInstantiator:
NodeInstantiator {
model: shellSurfaces
Panel {
id:panel
shellSurf: modelData
listIndex: index
}
}
Panel.qml:
Entity {
...
id:panel
components: [panelTransform, planeMesh, material, panelPicker]
...
Scene2D {
id: waylandScene
output: RenderTargetOutput { ... }
mouseEnabled: true
entities: [parent]
ShellSurfaceItem { ... }
}
...
}
Предполагается, что после создания Panel программа свяжет обработчик щелчка Scene2D с ObjectPicker внутри класса Scene2D. Это, однако, не выполняется, поскольку Scene2D никогда не выполняет свой внутренний метод при изменении свойства entities
.