【问题标题】:Qt3d Input in c++C ++中的Qt3d输入
【发布时间】:2016-05-24 18:37:01
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c++ qt qt3d


【解决方案1】:

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

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

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

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

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

Entity {
    id: sphere1

    MouseInput {
        id: mouseInput

        controller: mouseController
    }

    components: [mouseInput]
}

【讨论】:

  • cd qt3d ; grep -nr . -e QMouseInput 只给出src/input/frontend/qmousedevice.h:53:class QMouseInput;
猜你喜欢
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多