我需要获取在 Qt Widget (Qt C++) 中触发的所有事件的列表,例如一个可以捕获所有事件或某些将被调用的函数的实用程序,以及每次触发事件时要传递给函数的事件详细信息。
有人可以告诉我如何做到这一点,或者是否有任何免费实用程序可用于此目的?
QObject::installEventFilter是你想要的。您可以看到进入对象的所有事件。
如果您需要查看所有事件的所有事件,您可以在 QApplication 上安装事件过滤器,请参阅QCoreApplication::notify的文档:
在 QCoreApplication::instance() 上安装事件过滤器。这样的事件过滤器能够处理所有小部件的所有事件,因此它与重新实现 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);
}