我正在使用 Qt Graphics View 框架来创建一个场景并将多个视图附加到同一个场景,其中这些视图将 3D openscenegraph 场景渲染为背景,而 2D 绘图是一种叠加。
我试图在我的 OverlayViewport 类(继承 QGraphicsView)中拦截鼠标/键事件并相应地导航 3D 场景。下面是一个示例事件处理程序:
void OverlayViewport::mouseMoveEvent( QMouseEvent * event )
{
QGraphicsView::mouseMoveEvent(event);
if (event->isAccepted())
{
return;
}
3D_Scene_Stuff_Code();
}
但事件总是被接受,因此我的 3D 场景代码永远不会执行。如果我删除 isAccepted() 检查,我的代码总是会执行。
我想要实现的是,让场景做它的事情,比如选择、拖动 vs,如果它不做任何事情(不接受事件),做我的 3D 事情。
所以,这是我的问题:
1 - 我在这里走错路了吗?
2 - 如果场景不接受事件,我应该将事件转发到附加视图的场景并做我的事情吗?
3 - 如果不是 2,我应该如何进行?
最好的祝福。