Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么可以阻止mousePressEvent或事件过滤器鼠标单击事件?_Python_Qt_Events_Mouse_Qtreewidget - Fatal编程技术网

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

Python 什么可以阻止mousePressEvent或事件过滤器鼠标单击事件?,python,qt,events,mouse,qtreewidget,Python,Qt,Events,Mouse,Qtreewidget,我似乎无法在QTreeWidget中获得任何鼠标点击。我试过 …覆盖mousePressEvent,但它从未运行过。甚至不记录消息。 …使用事件文件管理器。它适用于除鼠标点击以外的所有操作。 …使用代理。他们的编辑器事件可以正常工作,但只有在一个项目上,这是不够的 …确保所有内容都添加到布局中。我使用了QTCreator,输出使用layout.addWidget。我还将小部件实例添加到主窗口中的布局中。 我能够使用答案将小部件注册为QTreeWidget的事件过滤器,如下所示: # In __i

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

因为你可以看到并点击QTreeWidget实际上是它的视口。您应该在它的视口上安装事件过滤器。

因为您可以看到并单击QTreeWidget的实际上是它的视口。您应该在其视口上安装事件过滤器