Qt ウィジェット (Qt C++) で発生したすべてのイベントのリストを取得する必要があります。これは、すべてのイベントまたは呼び出される関数と、イベントが発生するたびに関数に渡されるイベントの詳細をキャプチャできるユーティリティのようなものです。
誰かがこれを行う方法を教えてもらえますか、またはこの目的で利用できる無料のユーティリティはありますか?
QObject::installEventFilterはあなたが望むものです。オブジェクトに入ってくるすべてのイベントを見ることができます。
すべてのすべてのイベントを表示する必要がある場合は、QApplicationにイベントフィルターをインストールできます。QCoreApplication:: notify:のドキュメントを参照してください。
QCoreApplication :: instance()にイベントフィルターをインストールします。このようなイベントフィルターは、すべてのウィジェットのすべてのイベントを処理できるため、notify()を再実装するのと同じくらい強力です。さらに、複数のアプリケーショングローバルイベントフィルターを使用することもできます。グローバルイベントフィルターは、無効になっているウィジェットのマウスイベントも表示します。アプリケーションイベントフィルターは、メインスレッドに存在するオブジェクトに対してのみ呼び出されることに注意してください。
から派生したクラスを作成する場合QWidget
(それを呼び出しましょうRecordingWidget
)、その関数を再実装してevent()
、好きな方法で記録し(おそらく、の静的メンバーにログを保持します)、イベントをのデフォルト関数RecordingWidget
に渡し続けることができます。QWidget
event
bool RecordingWidget::event(QEvent *event)
{
// Record stuff
...
// Send the event through QWidget's default event implementation
return QWidget::event(event);
}