向任何 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 添加点击信号不支持它的主要内容,如果未能解决你的问题,请参考以下文章