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