如何创建自己的SIGNAL并将其引导至SLOT?

时间:2014-07-27 12:02:08

标签: python qt python-2.7 qt4 pyqt4

在鼠标上单击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()"))

1 个答案:

答案 0 :(得分:2)

请勿使用事件过滤器。您可以通过简单的方式实现这一目标:

self.UsrName = QLineEdit("username")
self.UsrName.mousePressEvent = lambda event: self.UsrName.clear()

就是这样。 每次用户点击lineEdit时,它都会被清除。