美文网首页
PyQt4 信号和槽详解

PyQt4 信号和槽详解

作者: 邓楼平 | 来源:发表于2017-06-28 01:42 被阅读0次

参照文档:

https://www.linuxzen.com/pyqt4-xin-hao-he-cao-xiang-jie.html

http://sofire.iteye.com/blog/1797845

使用起来并没有发生什么大问题,除了QtCore.SIGNAL以及QtCore.pyqtSignal的使用上出了偏差。

QtCore.pyqtSignal用来自定义一个pyqt的signal,要注意定义在pyqt的控件类的子类里,并且要作为类变量,而不是成员变量:

QtCore.pyqtSignal(int) 括号的int表示只接收一个类型为int的参数

那么关于signal的绑定有两种方式:(绑定到定义好的槽也差不多,目前没发现定义成槽有啥好处)

xxx.signal.connect(yyy.function) 通过signal绑定到具体的方法

yyy.connect(xxx,QtCore.SIGNAL('signal()'),function) 这个就有点蛋疼,因为实际上function是不固定的,意思就是说function可以和yyy没有一点关系,定义在yyy的外面都没有关系,当然了,xxx要是yyy的子控件(或者就是本身)

关于什么时候触发,也有两种方式:在控件里

self.clicked.emit() 这边关于参数的定义的话要放在signal定义的时候,需要传的参数放在这里。

self.emit(QtCore.SIGNAL("clicked()"),)后面想跟啥参数跟啥参数,槽那边或者绑定的方法记得接收就行了

这里的signal里面加不加括号有大区别,加括号意味着你里面怎么写,那边怎么收,中间有不同,就报错(和第一种触发方式一样)。但不加的话,首先那边信号接收也要不加括号,然后这边可以随便传参,那边也可以随便接收或者不接收,不会报错。

这两种中间实际有一个巨大的差别,那就是,使用第二种触发方式的话,你绝大多数并不需要真正给你的控件定义一个signal也能使用,当然了你绑定的方法也只能用第二种了。

目前只发现使用第二种绑定方法的情况下,如果你需要将这个signal绑定到transition给状态机用的话,那么不管transition那边你用哪种方式绑定,你都要定义一个signal。

相关文章

  • PyQt4 信号和槽详解

    参照文档: https://www.linuxzen.com/pyqt4-xin-hao-he-cao-xiang...

  • 信号和槽

    新建项目(application->Qt widgets application)->配置信息(详细信息->bas...

  • WebRTC信号和槽机制

    信号和槽的实现原理大致是这样的 : 信号对象持有连接,连接里记录了槽对象的地址和槽函数(某个成员函数)地址信号对象...

  • QT 练习2:信号和槽

    信号和槽 DEMO

  • Qt学习笔记(四)事件处理机制

    1、信号和槽 Qt中的事件处理机制叫“信号和槽”,signal和slot。模型:对象a中有一个信号signal:X...

  • PyQt信号和槽

    qt里的信号和槽除了可以传递行为外,还可以传递数据,这里以传递DataFrame为例

  • C++ ——Qt的信号和槽的详解

    1、概述 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检...

  • 信号与槽(SIGNAL-SLOT)

    一、系统设置槽-信号 在QtCreator中建立槽信号事件 设置槽事件 设置信号事件 二、自定义槽信号事件 设置对...

  • Qt 信号阻塞 和 断开信号槽

    原文地址: https://blog.csdn.net/u014339020/article/details/79...

  • 信号槽

    【Qt】信号和槽对值传递参数和引用传递参数的总结[https://www.cnblogs.com/liushui-...

网友评论

      本文标题:PyQt4 信号和槽详解

      本文链接:https://www.haomeiwen.com/subject/flpycxtx.html