4

信号が与えられた場合、特定の信号が接続されているスロットを特定するにはどうすればよいですか?

私は信号とスロットを接続する方法に精通しています。これはデバッグ目的のためです。

私はpyqt5、python 2.7を使用しています

4

2 に答える 2

8

信号は複数のスロット、または複数の他の信号、または同じ信号/スロットに複数回接続できるため、「その」スロットなどはありません。ただし、いずれにしても、現在の接続をすべて一覧表示できる組み込み API はありません。

次のように、シグナルの現在の接続を取得できます。

    count = button.receivers(button.clicked)

connectNotifydisconnectNotifyもありますが、これらのメソッドを再実装しても、オブジェクトに対してどのシグナルが接続または切断されたかがわかるだけなので、それ以上のことはできません。

QtTestモジュールにはQSignalSpy ( PyQt5でのみ利用可能) があり、特定の信号のすべての放出を記録できます。しかし、繰り返しになりますが、それは送信先ではなく、送信された引数のみを提供します。

Qt がこのための API を提供しない理由は、接続された項目のリストが潜在的に非常に不安定であるためだと思います。

PS:

どうやらあなたが求めていることを行うdumpObjectInfoについて言及するのを忘れていましたが、Qt のデバッグ ビルドでのみ動作します - リリース ビルドの場合は何もしません。

于 2014-03-25T04:01:32.163 に答える