gpt4 book ai didi

qt - 检测Qt中的右移键

转载 作者:行者123 更新时间:2023-12-02 01:12:09 24 4
gpt4 key购买 nike

是否可以只在Qt中捕获右shift键?

list of values for the Qt::Key enumKey_Shift (还有 Key_Kana_ShiftKey_Eisu_Shift 但它们似乎是用于日文键盘的)但我不知道如何区分正确的和左 shift 键,这甚至可能吗?

我想找到适用于主要平台(GNU/Linux、Windows、MacOS)的解决方案

感谢您的帮助和亲切的问候,托德

最佳答案

Qt 不为这些键提供可移植的名称。但是,它确实允许您访问特定于平台的 key 扫描码。这是通过 QKeyEvent::nativeScanCode() 完成的。在您的 QWidget::keyPressEvent() 函数中,添加一些临时代码来打印您按下的键的扫描代码:

#include <QDebug>
#include <QKeyEvent>
void YourWidgetClass::keyPressEvent(QKeyEvent *event)
{
qDebug() << event->nativeScanCode();
event->accept();
}

现在运行您的程序并按下 shift 键。在我的系统 (Linux/X11) 上,左移有代码 50,右移有代码 62。所以这意味着你可以检查那些:

void YourWidgetClass::keyPressEvent(QKeyEvent *event)
{
switch (event.nativeScanCode()) {
case 50: // left shift
case 62: // right shift
}
}

这些代码在使用 XCB 的 X11 中运行的所有 Linux 系统上都是相同的。它们在其他 Linux 系统上可能有所不同(比如那些运行 Wayland 而不是 X11 的系统。)它们在 Windows 上也不同,尽管所有 Windows 版本都使用(AFAIK)相同的代码。您可以在 Google 上搜索 Windows 上的扫描代码。请注意,扫描代码通常以十六进制记录,因此当您看到“30”时,您应该在代码中使用“0x30”。

不过您不能在 Mac OS 上执行此操作。在 Mac OS 上,您需要使用非 Qt API 来获取代码。

关于qt - 检测Qt中的右移键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44813630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com