Qt3d用c ++输入

问题描述 投票:4回答:1

是否可以在c ++中处理qt3d中的鼠标输入?我可以使用qt3d repo中的样本使用qml

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

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

尽管经过多次尝试(甚至尝试使用附加到各种小部件的事件过滤器捕获输入),我仍然无法在c ++中捕获鼠标事件。对于此版本的qt(5.6),qt3d的c ++鼠标输入api是完整的,还是应该等到5.7版?

c++ qt qt3d
1个回答
0
投票

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

首先,总是存在与QML相当的C ++。这是因为QML只是实例化C ++类。

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

看看你提供的repo中的其余代码,你必须创建QMouseController作为QEntity的子代(或者不要,我认为当它设置为一个组件时,父代也会相应地设置)并添加它作为所述实体的一个组成部分。

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

Entity {
    id: sphere1

    MouseInput {
        id: mouseInput

        controller: mouseController
    }

    components: [mouseInput]
}
© www.soinside.com 2019 - 2024. All rights reserved.