什么是 QKeyEvent.nativeModifiers()?

问题描述

什么是 QKeyEvent.nativeModifiers()?文档没有说太多 (https://doc.qt.io/qtforpython/PySide6/QtGui/QKeyEvent.html#PySide6.QtGui.PySide6.QtGui.QKeyEvent.nativeModifiers)。据我了解,通过在 QKeyEvent 对象上调用方法返回的整数表示修饰键(Ctrl、Shift、Alt 等)的完整状态。

此外,我会假设这些整数与其各自的修饰符状态之间的映射是系统的,那么有没有办法测试给定的修饰符状态是否包含特定的修饰符(例如,通过使用“&”运算符)?

重要的是,原生修饰符是否跨平台,以便 PC 上的 Left Ctrl 按键返回与 Mac 上的 Left Command 相同的整数(因为 Qt.Key_Control 对应于 MacOS 命令键)?

解决方法

顾名思义,原生修饰符在 mac 和 pc 上具有不同的值。在 windows 上值是 WindowsNativeModifiers 的组合,在 macOS 上它是 NSEventModifierFlags 的组合,两者都转换为 Qt::KeyboardModifiers (windows macOS)两个平台。