QGraphicsScene
의 고유 서브 클래스가 QGrapnhicsView
뒤에 있습니다 (무시하지 않았습니다). 내 장면에서 일부 마우스 이벤트를 처리합니다 (두 번 클릭 한 번 클릭). 하지만 동시에 내보기 커서 (QtGui.QGraphicsView.ScrollHandDrag
)로 스크롤 할 수 있습니다 싶습니다. 뷰 레이어에서 마우스 이벤트가 이미 스크롤을 일으켰거나 장면에 버블 링하지 않으면 어떻게 차단할 수 있습니까?QGraphicsView의 일부 마우스 이벤트를 차단하십시오.
0
A
답변
0
mouseMoveEvent
함수를 QGraphicsView에서 구현하고 이벤트를 수락해야합니다.
protected:
virtual void QGraphicsView::mouseMoveEvent(QMouseEvent * event)
{
QPoint mouseLocation = event->pos();
// Do stuff
event->accept();
}
마우스 이벤트 수락 prevents a parent class from handling that event.
이렇게하면 마우스 이동 이벤트가 전파되지 않습니다. 원하는 작업에 따라 mouseDoubleClickEvent
, mousePressEvent
, mouseReleasEvent
또는 wheelEvent
함수를 다시 구현할 수도 있습니다. 함수 정의는 모두 QGraphicsView 설명서에 있습니다.
0
Qt 설명서에 따라 QGraphicsView
의 서브 클래스를 실제로 만들고 새 서브 클래스에 mouseMoveEvent()
메서드를 다시 구현해야합니다.
참조 : 그것은 PySide의 경우에는 작동하지 않습니다http://doc.qt.io/qt-5/qgraphicsview.html#dragMode-prop
. 마우스 관련 메소드를 오버라이드하고 부모 메소드를 명시 적으로 호출하지 않으면 QGraphicsView의 스크롤 기능이 작동하지 않습니다. 명시 적으로 호출하고 이벤트의 'accept'메소드를 호출하면 아무것도 수행하지 않습니다. 여전히 장면에 전파됩니다. –
클래스 유형'redefinition' 오류입니다. –