首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5 eventFilter未捕获QEvent.MouseButtonRelease

PyQt5 eventFilter未捕获QEvent.MouseButtonRelease
EN

Stack Overflow用户
提问于 2022-10-21 18:02:53
回答 1查看 29关注 0票数 0

我正在尝试在安装了一个MouseButtonRelease之后捕获eventFilter。正确捕获MouseButtonPress,但不捕获MouseButtonRelease

我漏掉了什么还是这不可能?

最低工作实例:

代码语言:javascript
复制
import sys
from PySide6.QtWidgets import QGraphicsScene, QGraphicsView, QApplication
from PySide6.QtCore import QObject, QEvent


class FilterFunction(QObject):
    def __init__(self, parent: QObject) -> None:
        super().__init__(parent)

    def eventFilter(self, watched: QObject, event: QEvent) -> bool:
        if event.type() == QEvent.MouseButtonRelease:
            print(" QEvent.MouseButtonRelease")
        elif event.type() == QEvent.MouseButtonPress:
            print(" QEvent.MouseButtonPress")
        return super().eventFilter(watched, event)


app = QApplication(sys.argv)

scene = QGraphicsScene(0, 0, 400, 200)
view = QGraphicsView(scene)
view.setMouseTracking(True)
filterFunciton = FilterFunction(view)
view.installEventFilter(filterFunciton)
view.show()
app.exec()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 20:28:34

要获得视图的正确事件,必须监视视图的viewport:

代码语言:javascript
复制
view.viewport().installEventFilter(filterFunciton)

视口是呈现视图内容的区域,因此必须将事件相对于视图进行路由,以确保交付正确的协调。视图本身可能包含其他组件,如框架、滚动条、标头等,这些组件不被视为内容的一部分,因此必须单独处理。而且,viewport小部件本身可以是独立于视图的设置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74157602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档