在Qt的QKeyEvent
中,我可以通过检查ev->key()
是Qt::Key_Control
来检查是否按下了 Ctrl 。但是如何区分左右 Ctrl 键?
对于 Alt 和 Shift 键,我也需要相同的东西。
答案 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 Reference,enum Qt::Key
对Qt::Key_Alt
和Qt::Key_AltGr
的值不同。
但是,enum Qt::KeyboardModifier
和enum Qt::Modifier
并未将这对键视为不同的修饰符。
(注意:我会将此作为评论发布,但我还没有足够的代表。)
答案 3 :(得分:0)
如果VK_RCONTROL不起作用,请检查ctrl-right的nativeScanCode值:
的std :: COUT< nativeScanCode();并使用此值:
int control_right = 285; if(key-> nativeScanCode()== control_right){...