노드 그래프를 만들 때 장면의 빈 공간을 클릭하고 장면에서 현재 선택된 항목의 선택을 취소하지 않고 가운데 마우스 드래그하여 탐색 할 수 있기를 원합니다. 어떤 제안?중간 마우스 클릭이 QGraphicsScene의 항목을 장면의 항목에서 차단하지 않고 선택을 취소하는 방법?
보기의 mousePressEvent에서 중간 클릭을 차단하고 올바른 동작을 얻을 수 있지만 장면의 항목에 대해 중간 마우스 클릭 이벤트가 더 이상 작동하지 않습니다. 장면에서 항목을 클릭 할 때 중간 클릭을 한 번만 선택하면 좋겠지 만 장면의 빈 공간을 중간 클릭하면 선택 항목을 변경하지 않으려 고합니다. 나는 문제가 나는 PyQt는/PySide를 사용하고 같은
것이다 가정으로 PyQt. How to block clear selection on mouse right click?
내가 eventFilter를 사용하려고하지 않았다
이
내가 찾고 있어요 더 복잡한 동작을 포함하지 않았다 , FWIW.나 자신의 해결 방법을 롤업하기 전에 올바른 방법이나 적어도 다른 해결 방법을 위해 여기에 게시 할 것이라고 생각했습니다.
일부 해결 아이디어 :
- 블록 장면에 mousePressEvent하지만 직접
- 를 제공하는 동안 현장에서 mousePressEvent 여전히 선택을 복원 하위 항목을 반복. 아마도 규모면에서는 성능이 좋지 않을 지 모르겠지만 간단합니다.
모든 의견이 훌륭합니다!
[편집 :] 여기 내 대답은 파이썬 버전입니다. 코드가 테스트되었습니다. 내 QGraphicsScene 파생 클래스에서 : 그것은 중간 마우스 클릭의 경우 QGraphicsScene::mousePressEvent
파생 구현에서
def mousePressEvent(self, event):
# Prevent the QGraphicsScene default behavior to deselect-all when clicking on
# empty space by blocking the event in this circumstance.
item_under_the_mouse = self.itemAt(event.scenePos())
if event.button() == QtCore.Qt.MidButton and not item_under_the_mouse:
event.accept()
else:
super(GraphScene, self).mousePressEvent(event)
이것은 내가 향하고있는 방향입니다. 다행이 확인을 참조하십시오. 파이썬 버전을 게시하면 일단 작동합니다. – Rafe
우수 ... 파이썬을 모르지만 답변에서 앞뒤로 쉽게 변환 할 수 있습니다. – goug