跟踪Qt中的事件

时间:2013-01-10 23:24:40

标签: c++ qt

我需要获取在Qt Widget(Qt C ++)中触发的所有事件的列表,就像一个实用程序,它可以捕获所有事件或一些将被调用的函数以及每次事件时要传递给函数的事件详细信息被解雇了。

有人可以告诉我该怎么做或有没有可用于此目的的免费实用程序?

2 个答案:

答案 0 :(得分:2)

QObject::installEventFilter就是你想要的。您可以看到进入对象的所有事件。

如果您需要查看所有事件的所有事件,可以在QApplication上安装事件过滤器,请参阅QCoreApplication::notify的文档:

  

在QCoreApplication :: instance()上安装事件过滤器。这样的   事件过滤器能够处理所有小部件的所有事件,所以它是   和重新实现notify()一样强大;而且,它是   可能有多个应用程序全局事件过滤器。全球   事件过滤器甚至可以查看禁用小部件的鼠标事件。注意   应用程序事件过滤器仅针对居住在其中的对象调用   主线。

答案 1 :(得分: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);
}