如何创建自己的 SIGNAL 并将其引导到 SLOT?
Posted
技术标签:
【中文标题】如何创建自己的 SIGNAL 并将其引导到 SLOT?【英文标题】:How can i create my own SIGNAL and channel it to a 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()"))
【问题讨论】:
【参考方案1】:不要使用事件过滤器。您可以通过简单的方式实现:
self.UsrName = QLineEdit("username")
self.UsrName.mousePressEvent = lambda event: self.UsrName.clear()
就是这样。 用户每次点击lineEdit,都会被清空。
【讨论】:
以上是关于如何创建自己的 SIGNAL 并将其引导到 SLOT?的主要内容,如果未能解决你的问题,请参考以下文章
fork 和 signal:如何将信号从父进程发送到特定的子进程