Qt LEFT CTRL键码

时间:2012-07-01 15:32:01

标签: c++ qt events keyboard-events ctrl

在Qt的QKeyEvent中,我可以通过检查ev->key()Qt::Key_Control来检查是否按下了 Ctrl 。但是如何区分左右 Ctrl 键?

对于 Alt Shift 键,我也需要相同的东西。

4 个答案:

答案 0 :(得分:3)

据我所知,使用纯Qt方法无法做到这一点。

但是,您可以使用QKeyEvent::nativeScanCode()方法而不是QKeyEvent::key()来区分密钥,具体取决于您的平台。

例如,在Windows上,您应该能够测试按下了哪个 Ctrl 键,如下所示:

if (event->nativeScanCode() == VK_LCONTROL) {
  // left control pressed
} else if (event->nativeScanCode() == VK_RCONTROL) {
  // right control pressed
}

答案 1 :(得分:1)

左右键是虚拟键码的一部分 - >使用nativeVirtualKey()与windows VK_ *枚举而不是nativescancode()进行比较。

答案 2 :(得分:1)

根据Qt Namespace Referenceenum Qt::KeyQt::Key_AltQt::Key_AltGr的值不同。

但是,enum Qt::KeyboardModifierenum Qt::Modifier并未将这对键视为不同的修饰符。

(注意:我会将此作为评论发布,但我还没有足够的代表。)

答案 3 :(得分:0)

如果VK_RCONTROL不起作用,请检查ctrl-right的nativeScanCode值:

的std :: COUT< nativeScanCode();并使用此值:

int control_right = 285; if(key-> nativeScanCode()== control_right){...