鉴于信号,我如何确定特定信号连接的插槽?
我熟悉如何连接信号和插槽,这更多用于调试目的。
我正在使用pyqt5,python 2.7
答案 0 :(得分:5)
没有“插槽”这样的东西,因为信号可以连接多个插槽,或多个其他信号,或多次连接相同的信号/插槽。但无论如何,没有可以列出所有当前连接的内置API。
您可以获得信号当前连接的计数,如下所示:
count = button.receivers(button.clicked)
还有connectNotify和disconnectNotify - 但这并没有让您更进一步,因为重新实现这些方法只会告诉您哪些信号已连接或断开连接对象。
QtTest
模块有QSignalSpy(仅在PyQt5中可用),它可以记录给定信号的所有发射。但是,再说一次,这只会给你发送的论据,而不是发送给他们的地方。
我认为Qt没有为此提供API的原因是连接项列表可能非常不稳定。
PS:
我忘了提及dumpObjectInfo,这显然是你要求的,但只适用于Qt的调试版本 - 对于发布版本,它什么都不做。
答案 1 :(得分:0)
没有强有力的方法:查看Determine signals connected to a given slot in Qt的接受答案以及Kuba在该页面上的最新答案。结论是,您最好说明您要解决的问题,也许其他人会有解决方案而不涉及确定连接。