如何创建自己的 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过代码将efi应用程序设置为引导加载程序?

如何生成木兰引导文件?

fork 和 signal:如何将信号从父进程发送到特定的子进程

如何防止(卸载)TypeScript 安装并将其自己的 @types 引用到 AppData\Local

MVC 添加角色并将其添加到用户

如何通过 fullcalendar 使用 AJAX 将引导模式输入插入到 SQL 表中