1

我似乎无法在 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
4

1 回答 1

4

因为您可以看到(并点击)QTreeWidget实际上是viewport(). 您应该在其上安装事件过滤器viewport()

于 2012-06-26T00:38:24.610 回答