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 でない場合、どのように進めればよいですか?
よろしくお願いします。