2013-01-10 43 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); 
}