什么可以阻止mousePressEvent或事件过滤鼠标单击事件?

时间:2012-06-25 22:15:34

标签: python qt events mouse qtreewidget

我似乎无法在QTreeWidget中点击任何鼠标。我试过......

  • ...覆盖mousePressEvent,但它根本不会运行。甚至没有记录消息。
  • ...使用事件文件管理器。除鼠标点击外,它适用于所有内容。
  • ...使用代表。他们的编辑器活动工作正常,但只有在一个项目上,这是不够的
  • ...确保将所有内容添加到布局中。我使用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

1 个答案:

答案 0 :(得分:4)

因为您在QTreeWidget上看到(并点击)的内容实际上是viewport()。你的安装事件过滤器是viewport()而不是。{/ p>