0

GTK3 を使用してウィジェットから送信されたすべてのシグナルを監視する方法はありますか? シグナルがイベントの前に送信されることは知っていeventますが、GTK 用語での「イベント」と「シグナル」の区別がわかりません。これは、すべてのシグナルをキャプチャしていないように見えるためです。

GDK には関数があることは知っていますgdk_set_show_eventsが、これは主にオペレーティング システムからウィンドウに送信されるイベントを示しています。GTK3 に相当するものはありますか?

4

2 に答える 2

1

AFAIKに組み込まれた機能はありませんが、自分で何かをハックできると確信しています:

g_signal_lookupを使用して、gtype のすべてのシグナル ID を取得します。次に、インスタンスの各シグナルでg_signal_add_emission_hookを使用して、特定のシグナルが発信されるたびに呼び出されるフックを登録します。フック関数内では、g_signal_queryがデバッグ メッセージを出力するために必要なすべての情報を提供する必要がある 経由*ihintでシグナル ID が提供されます。(私はそれをテストしませんでしたが、動作するはずです)

残念ながら、これは G_SIGNAL_NO_HOOKS で定義されたシグナルに対しては機能しないことに注意してください。

于 2013-03-01T11:27:02.497 に答える