1

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 でない場合、どのように進めればよいですか?

よろしくお願いします。

4

1 に答える 1

0

犯人を見つけました。これは Qt のバグだったようです。QGraphicsView は、mouseMoveEvents の受け入れフラグを適切に設定しません。これは mouseMoveEvents でのみ発生し、他のイベントは問題ありません。これは Qt に報告され、修正されるのを待っています。

于 2010-03-15T09:08:46.910 に答える