C ++中的Qt3d输入
Posted
技术标签:
【中文标题】C ++中的Qt3d输入【英文标题】:Qt3d Input in c++ 【发布时间】: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版本?
【问题讨论】:
这是***.com/questions/45434065/… 你在追求什么? 【参考方案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;
以上是关于C ++中的Qt3d输入的主要内容,如果未能解决你的问题,请参考以下文章