如何将QKeyEvent::nativeModifiers()转换为UINT fsModifiers

How to convert QKeyEvent::nativeModifiers() to UINT fsModifiers (for winapi RegisterHotKey)

本文关键字:转换 UINT fsModifiers nativeModifiers QKeyEvent      更新时间:2023-10-16

我有:

QKeyEvent* event; // I pressed "SHIFT"
modifiers = event->nativeModifiers(); // This is 513 value
RegisterHotKey(..., ..., modifiers, ...); // FAILED because 513 is bad modifier. 
//Right code of "SHIFT" is MOD_SHIFT = 0x0004

如何从QKeyEvent中为winapi RegisterHotKey函数获取正确的本机Windows修饰符?

详细信息:

问题5.4;QKeyEvent;寄存器热键

您可以执行类似于Qxt库转换修饰符的操作:

modifiers = event->nativeModifiers();
quint32 native = 0;
if (modifiers & Qt::ShiftModifier)
    native |= MOD_SHIFT;
if (modifiers & Qt::ControlModifier)
    native |= MOD_CONTROL;
if (modifiers & Qt::AltModifier)
    native |= MOD_ALT;
if (modifiers & Qt::MetaModifier)
    native |= MOD_WIN;
RegisterHotKey(..., ..., native, ...);