在 Qt 中,QKeyEvent
我可以通过检查 if is来检查是否Ctrl被按下。但是如何区分左右键呢?ev->key()
Qt::Key_Control
Ctrl
我也需要Alt和Shift钥匙一样的东西。
在 Qt 中,QKeyEvent
我可以通过检查 if is来检查是否Ctrl被按下。但是如何区分左右键呢?ev->key()
Qt::Key_Control
Ctrl
我也需要Alt和Shift钥匙一样的东西。
Qt
据我所知,没有办法使用纯方法来做到这一点。
但是,根据您的平台,您可能能够使用QKeyEvent::nativeScanCode()
方法而不是QKeyEvent::key()
.
例如,在 Windows 上,您应该能够测试按下了哪个Ctrl键,如下所示:
if (event->nativeScanCode() == VK_LCONTROL) {
// left control pressed
} else if (event->nativeScanCode() == VK_RCONTROL) {
// right control pressed
}
左右键是虚拟键代码的一部分 -> 用于nativeVirtualKey()
与 windowsVK_*
枚举而不是nativescancode()
.
根据Qt 命名空间参考, 和具有enum Qt::Key
不同的值。Qt::Key_Alt
Qt::Key_AltGr
但是,enum Qt::KeyboardModifier
不要enum Qt::Modifier
将这对键视为不同的修饰符。
(注意:我会将此作为评论发布,但我没有足够的代表。但)
如果VK_RCONTROL
不起作用,请检查您的 nativeScanCode 值ctrl- right:
std::cout<<keyEvent->nativeScanCode();
并使用这个值:
int control_right = 285;
if(key->nativeScanCode() == control_right){...