2012-06-25 5 views
0

Я не могу получить никаких щелчков мыши в QTreeWidget. Я пробовал ...Что может блокировать mousePressEvent или фильтр фильтра событий мыши Нажмите «События»?

  • ... переопределяющая мышьPressEvent, но она никогда не запускается вообще. Даже не регистрировать сообщение.
  • ... используя фильтр событий. Он работает на все, кроме щелчков мыши.
  • ... использование делегатов. Их события редактора работают нормально, но только когда над элементом, которого недостаточно
  • ... убедитесь, что все добавлено в макеты. Я использовал QTCreator, и на выходе используется layout.addWidget(). Я также добавляю экземпляр виджета в макет в главном окне.

Я был в состоянии использовать ответ, чтобы зарегистрировать виджет в качестве фильтра событий для QTreeWidget как так:

# 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

, потому что вы можете увидеть (и щелчок) на QTreeWidget на самом деле это viewport(). Вместо этого вы устанавливаете фильтр событий на нем viewport().