在鼠标上单击QLineEdit小部件时,我想完全清除其内容。
QLineEdit没有SIGNAL来检测鼠标点击,因此我为installEventFilter编写了以下类。
但是请建议我是否可以将其引导至SLOT(“clear()”)。 建议我遗漏的地方 -
class mouseclick(QObject):
def __init__(self, parent=None):
super(mouseclick, self).__init__(parent)
def eventFilter(self, object, event):
if (event.type() == QEvent.MouseButtonPress):
self.emit(SIGNAL("aa"), "a")
return False
class Form(QDialog):
def __init__(self,parent=None):
super(Form,self).__init__(parent)
self.UsrName = QLineEdit("Username")
self.filter = mouseclick()
self.UsrName.installEventFilter(self.filter)
self.connect(self.UsrName,SIGNAL("aa"), SLOT("clear()"))
答案 0 :(得分:2)
请勿使用事件过滤器。您可以通过简单的方式实现这一目标:
self.UsrName = QLineEdit("username")
self.UsrName.mousePressEvent = lambda event: self.UsrName.clear()
就是这样。 每次用户点击lineEdit时,它都会被清除。