2010-02-01 4 views
1

Qt 그래픽보기 프레임 워크를 사용하여 장면을 만들고 여러 장면을 동일한 장면에 첨부합니다.이 장면에서는 배경으로 3D openscenegraph 장면을 렌더링하고 2D 그림은 오버레이 종류입니다.QGraphicsView에서 허용하는 이벤트

내 OverlayViewport 클래스에서 마우스/키 이벤트를 가로 채 (QGraphicsView 상속)하고 그에 따라 3D 장면을 탐색하려고합니다. 다음은 샘플 이벤트 핸들러입니다.

void OverlayViewport::mouseMoveEvent(QMouseEvent * event) 
{ 
    QGraphicsView::mouseMoveEvent(event); 
    if (event->isAccepted()) 
    { 
     return; 
    } 

    3D_Scene_Stuff_Code(); 
} 

이벤트는 항상 허용되므로 내 3D 장면 코드는 실행되지 않습니다. isAccepted() 확인을 제거하면 코드가 항상 실행됩니다.

내가 원하는 것은, 장면이 선택 항목처럼 드래그하고, 아무것도하지 않으면 (이벤트를 수락하지 않음), 3D로 처리합니다.

내 질문은 여기에 있습니다.
1 - 잘못된 경로입니까?
2 -보기가 첨부 된 장면으로 이벤트를 전달하고 이벤트가 장면에서 허용되지 않으면 내 작업을 수행해야합니까?
3 - 2가 아니면 어떻게 진행해야합니까?

좋습니다.

답변

0

나는 범인을 발견했다. 이것은 Qt의 버그였습니다. QGraphicsView는 mouseMoveEvents의 허용 된 플래그를 적절하게 설정하지 않습니다. 이것은 mouseMoveEvents에서만 발생하며 다른 이벤트는 정상입니다. 그것은 Qt에보고되고 수정되기를 기다리고 있습니다.

+0

게시 하시겠습니까? 해당 버그 보고서의 URL은 여기에 게시 하시겠습니까? 나는 Qt 5.1 (Qt 5.2도 확인했다)을 사용 중이며 같은 문제에 직면 해있다. 귀하의 사례에 대한 해결 방법을 찾았습니까? –

+0

고정되어 있고 닫혀있는 것 같습니다. 여기에 다음과 같이 표시됩니다. https://bugreports.qt-project.org/browse/QTBUG-8061 – erelender

+0

나는 그것을 보았지만 mouseDoubleClickEvent()와 관련되어 있지만 원래 게시물에서 mouseMoveEvent()를 언급합니다. 그래서 내가 물었다. –

관련 문제