在 Qt 中,QKeyEvent我可以通过检查 if is来检查是否Ctrl被按下。但是如何区分左右键呢?ev->key()Qt::Key_ControlCtrl
我也需要Alt和Shift钥匙一样的东西。
在 Qt 中,QKeyEvent我可以通过检查 if is来检查是否Ctrl被按下。但是如何区分左右键呢?ev->key()Qt::Key_ControlCtrl
我也需要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_AltQt::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){...