【问题标题】:How can i create my own SIGNAL and channel it to a SLOT?如何创建自己的 SIGNAL 并将其引导到 SLOT?
【发布时间】:2014-07-27 12:02:07
【问题描述】:

在 QLineEdit 小部件上单击鼠标,我想完全清除其内容。

QLineEdit 没有检测鼠标点击的信号,所以我为 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()"))

【问题讨论】:

    标签: python qt python-2.7 qt4 pyqt4


    【解决方案1】:

    不要使用事件过滤器。您可以通过简单的方式实现:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多