什么可以阻止mousePressEvent或Event Filter Mouse单击事件? [英] What can block mousePressEvent or Event Filter Mouse Click Events?
本文介绍了什么可以阻止mousePressEvent或Event Filter Mouse单击事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我似乎无法在QTreeWidget中点击鼠标。我试过...
I can't seem to get any mouse clicks in a QTreeWidget. I have tried...
- ...覆盖mousePressEvent,但它根本不运行。甚至不记录消息。
- ...使用事件文件管理器。它适用于除鼠标点击之外的所有内容。
- ...使用代理。他们的编辑活动工作正常,但只有在超过一个项目,这是不够的
- ...确保一切都被添加到布局。我使用QTCreator,输出是使用layout.addWidget()。我还将窗口小部件实例添加到主窗口中的布局。
- ...overriding mousePressEvent, but it never runs at all. Not even to log a message.
- ...using an event filer. It works for everything but mouse clicks.
- ...using delegates. Their editor events work fine, but only when over an item, which isn't enough
- ...making sure everything is being added to layouts. I used QTCreator and the output is using layout.addWidget(). I am also adding the widget instance to a layout in the main window.
我可以使用答案将窗口小部件注册为QTreeWidget的事件过滤器如下所示:
I was able to use the answer to register the widget as an event filter for the QTreeWidget like so:
# 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
推荐答案
因为你可以看到QTreeWidget 实际上是 viewport()
。您在其 viewport()
之间引导安装事件过滤器。
because what you can see (and click) on QTreeWidget
is actually it's viewport()
. You sholud install event filter on it's viewport()
instead.
这篇关于什么可以阻止mousePressEvent或Event Filter Mouse单击事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文