Qt:事件类型在哪里定义?

时间:2017-09-01 14:15:29

标签: windows qt message

我试图根据官方网站上提供的解释,在我的Qt应用程序中实现nativeEventFilter拦截Windows消息:

https://doc.qt.io/qt-5/qabstractnativeeventfilter.html#details

但是,他们没有提到应该定义eventType的位置/方式,也没有提供任何提示。因此,windows_dispatcher_MSG在我的程序中显然是未定义的。

1 个答案:

答案 0 :(得分:1)

举了一个小例子:

bool Foo::nativeEventFilter(const QByteArray & eventType, void * message, long * result)
{
    static const QByteArray windowsDispatcherMSG("windows_dispatcher_MSG");
    if (eventType != windowsDispatcherMSG)
        return false;

    const MSG * m = static_cast<MSG*>(message);
    if (m->message != WM_DEVICECHANGE)
        return false;

    /** ...do something... **/
}
  1. 将eventType与您要处理的事件进行比较
  2. 将空指针强制转换为MSG
  3. 检查消息的类型
  4. 做任何你需要做的事