2014-03-24 77 views

回答

3

有作爲「該」槽沒有這樣的事情,因爲一個信號可以被連接到多個時隙,或多個其他信號,或相同的信號/槽多次。但無論如何,沒有可以列出所有當前連接的內置API。

你可以得到一個計數信號當前連接的,像這樣:

count = button.receivers(button.clicked) 

還有connectNotifydisconnectNotify - 但是,這並不讓你更進一步,因爲重新實現這些方法只會告訴你哪個信號連接或斷開的對象。

QtTest模塊有QSignalSpy(僅在PyQt5中可用),它可以記錄給定信號的所有發射。但是,這隻會給你發送的論據,而不是發送給他們的論據。

我想爲什麼Qt不提供API的原因是連接項目的列表可能非常不穩定。

PS:

我忘了提dumpObjectInfo,這顯然不你問什麼,但只會使用Qt的調試版本的工作 - 爲發佈版本,它什麼都不做。

0

沒有可靠的方法:檢查接受回答Determine signals connected to a given slot in Qt和Kuba在該頁面上最近的答案。結論是,你最好說明你想解決什麼問題,也許其他人會有解決方案,不涉及確定連接。

+0

接受的答案(從這個問題的角度來看)的主要問題是它只與PyQt4有關(甚至只有在使用舊式語法時)。對於PyQt5,它根本無法工作,因爲沒有'QObject.connect'(即PyQt5只支持新式語法)。對於PyQt,需要通過某種方式來掛鉤「pyqtBoundSignal」連接到插槽的機制。這對定製信號可能是可能的,但所有內置信號又如何?我看不到方法... – ekhumoro

+0

@ekhumoro是的謝謝澄清。雖然不幸的是Qt不支持這一點,這就是爲什麼我認爲OP更適合尋找不同的調試方法。 – Schollii