2012-06-25 10 views
0

QTreeWidget에서 마우스 클릭이 발생하지 않는 것 같습니다. 나는 시도했다 ...mousePressEvent 또는 Event Filter Mouse Click Events를 차단할 수있는 항목은 무엇입니까?

  • ... overriding mousePressEvent, 그러나 결코 전혀 실행되지 않는다. 심지어 메시지를 기록하지 않습니다.
  • ... 이벤트 파일러 사용. 마우스 클릭을 제외한 모든 작업에 사용할 수 있습니다.
  • ... 대리인을 사용 중입니다. 에디터 이벤트는 정상적으로 작동하지만 항목이 충분하지 않을 때만 해당합니다.
  • ... 모든 것이 레이아웃에 추가되도록합니다. 나는 QTCreator를 사용했고 출력물은 layout.addWidget()을 사용했다. 또한 위젯 인스턴스를 기본 창의 레이아웃에 추가하고 있습니다.

는 그래서 같은 QTreeWidget에 대한 이벤트 필터로 위젯을 등록 할 대답을 사용할 수 있었다 : 당신이 QTreeWidget에 표시 (클릭) 할 것은이 viewport()있어 실제로

# In __init___ 
    # self.tree is the QTreeWidget 
    self.tree.viewport().installEventFilter(self) 



def eventFilter(self, target, event): 
    """ 
    This widget is an event filter for the tree, so this function is triggered 
    automatically 
    """ 
    # Print on right-click 
    if (event.type() == QEvent.MouseButtonPress and 
     event.button() == Qt.RightButton): 
     print("Right Click") 

    # Don't block/accept the event 
    return False 
+0

일부 코드를 표시 할 수 있습니까? – Junuxx

답변

4

때문이다. 대신에 이벤트 필터를 설치하면 viewport()이됩니다.