向任何 QWidget 添加点击信号不支持它

Posted

技术标签:

【中文标题】向任何 QWidget 添加点击信号不支持它【英文标题】:adding click signal to any QWidget doesn't support it 【发布时间】:2018-03-08 18:39:25 【问题描述】:

我非常需要在用户单击 QLineEdit 后立即清除它,但我发现 QLineEdit 不支持单击的信号,所以我搜索直到找到下面的代码来执行任务,它工作正常但我发现它还响应 Key Board Press 事件,不仅是鼠标单击事件,我无法解释为什么! ,所以任何人都可以提供帮助!

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *

def clickable(widget):

    class Filter(QObject):

        clicked = pyqtSignal()

        def eventFilter(self, obj, event):

            if obj == widget:
                if event.type() == QEvent.MouseButtonPress:
                    if obj.rect().contains(event.pos()):
                        self.clicked.emit()
                        return True

            return False

    filter = Filter(widget)
    widget.installEventFilter(filter)
    return filter.clicked

【问题讨论】:

我已经测试了你的代码,只有当鼠标按下时才会发出信号。 您是否在 QlineEdit 或其他工具上进行过测试? 是的,使用 QLineEdit,这是我的测试:gist.github.com/eyllanesc/6ecdcaf3ad0fbd90edc59468549e39d8 你的代码看起来和我的很接近,但对我来说,每次点击鼠标或键盘上的键都会做出反应 我对此表示怀疑,我认为您实施得不好。你可以分享你的完整代码。 【参考方案1】:

代码正确,问题出在我的 IDE 中

【讨论】:

以上是关于向任何 QWidget 添加点击信号不支持它的主要内容,如果未能解决你的问题,请参考以下文章

无法向 Mainactivity 添加操作,因为它不支持操作

java泛型-“扩展”关键字->不支持添加元素

QWidget 在另一个小部件上

发生身份验证错误 要求的函数不受支持

微信号怎么取消关注

内容未添加 \ 在 QWidget 中显示