QML: события щелчка Scene2D не запускаются при создании экземпляра с помощью NodeInstantiator - PullRequest
1 голос
/ 09 июня 2019

Я создаю 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.

...