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输入的主要内容,如果未能解决你的问题,请参考以下文章

c语言中的变量的作用,如何从键盘中输入多个变量的值?

删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。

我的 C 程序中的字符输入错误?

c_cpp C中的基本用户输入功能

C/C++编程笔记:C++中的标准输入流 & 标准输出流

C语言中的格式化输出函数和格式化输入函数分别是啥?