4

是否可以在 c++ 中处理 qt3d 中的鼠标输入?我可以使用 qt3d repo 中的示例使用 qml 来做到这一点

https://github.com/qtproject/qt3d/tree/5.6/examples/qt3d/mouseinput-qml

然而,这没有 c++ 等价物。

尽管进行了多次尝试(甚至尝试使用附加到各种小部件的事件过滤器来捕获输入),但我根本无法在 C++ 中捕获鼠标事件。qt3d 的 c++ 鼠标输入 api 对于这个版本的 qt (5.6) 是否完整,还是我应该等待 5.7 版本?

4

1 回答 1

1

虽然这是一个老问题,但如果有人需要,我会提供答案。

首先,总是有 C++ 与 QML 的等价物。这是因为 QML 只是实例化了 C++ 类。

在这种情况下,根据QML 文档,类QMouseController被实例化。

查看您提供的 repo 中的其余代码,您必须将其创建QMouseController为的子级QEntity(或者不要,我认为在将其设置为组件时,父级也会相应地设置)并将其添加为所述实体的组件。

property MouseInput mouseInput在 QML 代码中仅将其作为属性添加到实体(我假设)。您也可以省略将其添加为属性,而是为其分配一个 ID(在MouseInput块内)并使用此 ID 将其添加到实体,即

Entity {
    id: sphere1

    MouseInput {
        id: mouseInput

        controller: mouseController
    }

    components: [mouseInput]
}
于 2018-05-31T07:04:29.010 回答