1

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

有人可以告诉我如何做到这一点,或者是否有任何免费实用程序可用于此目的?

4

2 回答 2

2

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

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

在 QCoreApplication::instance() 上安装事件过滤器。这样的事件过滤器能够处理所有小部件的所有事件,因此它与重新实现 notify() 一样强大;此外,可以有多个应用程序全局事件过滤器。全局事件过滤器甚至可以看到禁用小部件的鼠标事件。请注意,应用程序事件过滤器仅对存在于主线程中的对象调用。

于 2013-01-10T23:38:59.997 回答
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);
}
于 2013-01-10T23:40:39.097 回答