我需要獲取Qt Widget(Qt C++)中觸發的所有事件的列表,如實用程序,它可以捕獲所有事件或將要調用的某個函數,並將事件詳細信息傳遞給函數每次事件被解僱。Qt中的跟蹤事件
有人可以告訴我該怎麼做,或者是否有任何免費的工具可用於此目的?
我需要獲取Qt Widget(Qt C++)中觸發的所有事件的列表,如實用程序,它可以捕獲所有事件或將要調用的某個函數,並將事件詳細信息傳遞給函數每次事件被解僱。Qt中的跟蹤事件
有人可以告訴我該怎麼做,或者是否有任何免費的工具可用於此目的?
QObject::installEventFilter是你想要的。你可以看到所有的事件到一個對象。
如果您需要看到的一切所有事件,你可以在安裝的QApplication事件過濾器,請參閱文檔QCoreApplication::notify:
上QCoreApplication安裝一個事件過濾器::實例()。這樣的事件過濾器能夠處理所有小部件的所有事件,所以它的功能與重新實現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);
}