2013-01-10 162 views
1

我需要獲取Qt Widget(Qt C++)中觸發的所有事件的列表,如實用程序,它可以捕獲所有事件或將要調用的某個函數,並將事件詳細信息傳遞給函數每次事件被解僱。Qt中的跟蹤事件

有人可以告訴我該怎麼做,或者是否有任何免費的工具可用於此目的?

回答

1

QObject::installEventFilter是你想要的。你可以看到所有的事件一個對象。

如果您需要看到的一切所有事件,你可以在安裝的QApplication事件過濾器,請參閱文檔QCoreApplication::notify

上QCoreApplication安裝一個事件過濾器::實例()。這樣的事件過濾器能夠處理所有小部件的所有事件,所以它的功能與重新實現notify()一樣強大,如 。此外,它可能有多個應用程序全局事件過濾器。全球 事件過濾器甚至可以查看禁用小部件的鼠標事件。請注意, 應用程序事件過濾器僅針對居住在 主線程中的對象調用。

0

如果您從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); 
}