首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鼠标控制Qt 3D窗口

鼠标控制Qt 3D窗口
EN

Stack Overflow用户
提问于 2017-02-02 01:40:25
回答 1查看 1.3K关注 0票数 1

我有一个包含Qt3DWindow()的QWidget。我希望能够在Qt3DWindow中使用鼠标滚轮“放大”和缩小QtEntity,同时将鼠标悬停在窗口上。

我有功能工作,但只有当鼠标悬停在Qt3DWindow框架外。下面是初始化窗口和处理鼠标滚轮事件的代码。

窗口初始化:

代码语言:javascript
复制
mainView = new Qt3DExtras::Qt3DWindow();
mainView->defaultFramegraph()->setClearColor(QColor(QRgb(0x4d4d4f)));

QWidget *container = QWidget::createWindowContainer(mainView);

正在处理轮子事件:

代码语言:javascript
复制
void ModelView::wheelEvent(QWheelEvent *event){

    QVector3D vec;

    vec = cameraEntity->position() - modifier->m_transform->translation();

    vec = vec.normalized();

    QPoint delta = event->angleDelta();

    int zoom_distance = delta.y()*0.01;

    vec = cameraEntity->position() - zoom_distance*vec;

    cameraEntity->setPosition(vec);
}

当鼠标悬停在Qt3DWindow框架上时,覆盖窗口的鼠标抓取的诀窍是什么?

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-02 03:12:14

我建议使用事件过滤器来拦截Qt3DWindow事件。您的ModelView类可以将自身安装为Qt3DWindow上的事件过滤器,检测轮子事件,自行处理它们,并返回true以指示它们已被处理。对于所有其他事件,返回false,Qt3DWindow将正常接收和处理它们。

看看文档中的QObject::installEventfilter和QObject::eventFilter方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41986164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档