2010-05-30 4 views
15

QGraphicsView에서 파생 된 클래스가 있는데 여기에는 QGraphicsItem 파생 요소가 포함되어 있습니다. 나는 마우스 커서 그들을 위로 가져갈 때마다 이러한 요소 색상을 변경하려면, 그래서 hoverEnterEvent (및 hoverLeaveEvent)를 구현 :QGraphicsItem에서 마우스를 가리키면 이벤트가 수신되지 않습니다.

void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event) 
{ 
    update (boundingRect()); 
} 

그러나,이 이벤트 핸들러 코드가 실행되지 않습니다. 명시 적으로 마우스 추적을 사용 설정했습니다.

MyGraphicsView::MyGraphicsView(MainView *parent) : 
    QGraphicsView(parent) 
{ 
    setMouseTracking(true); 
    viewport()->setMouseTracking(true); 
    ... 
} 

운 좋게도. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

22

수정 됨. 내 QGraphicsItem 생성 클래스의 생성자에서 setAcceptHoverEvents(true)을 사용해야합니다. 내 경우

+1

나는이 같은 문제가 있었고,'QGraphicsView'에서'mouseMoveEvent' 구현을 제거하는 것이 또한 그것을 고칠 필요가있었습니다. 이제는'QEvent'를 먹지 않는 방법을 찾아 내면 아마'mouseMoveEvent'를 다시 추가 할 수 있습니다. –

+0

정말 고마워요! 방금 큰 고통을 끝냈습니다 –

+0

@CoryKlein mouseMoveEvent 및 hover 이벤트를 모두 사용할 수있는 방법을 찾았습니까? – lena

1

, 나는이 를 QGraphicsView 클래스의 내 구현 mouseMoveEvent를 오버라이드하면 이벤트가 작동하지 않을 것입니다 가져.

QGraphicsView::mouseMoveEvent(event); 

에 대한 호출을 추가하여 부모에게 이벤트를 전파하고 모든 장면 항목으로 이벤트를 보냈습니다.

관련 문제