a到z的键盘字母在Qt的keyPressEvent中不起作用

Keyboard letters of a to z are not working in keyPressEvent in Qt

本文关键字:keyPressEvent Qt 不起作用 键盘      更新时间:2023-10-16

我在我的应用程序中使用KeyPressEvent。但是从 a 到 z 的字母不起作用。

void mywindow::keyPressEvent(QKeyEvent *event)
{
    switch(event->key())
    {
        case Qt::Key_Left:
            break;
    }
}

这工作正常

但是当我使用Key_RKey_L它不起作用时。

编辑:keyReleaseEvent使用这些字母。

试试这个:

void SimpleWidget::keyPressEvent(QKeyEvent *event)
{
    if (event->key() == Qt::Key_R)
    {
        // Key R was pressed
    }
}

或者,您可以使用QString QKeyEvent::text () const方法简单地检查键值。

不确定你还需要它,但也许有人会。

我处于同样的情况,当按 a 到 z 字母时,没有事件发送到我的 QMainWindow,但 ctrl、cmd、alt 或 esc...正在工作。

我解决了在构造函数中添加它的问题。

this->setFocusPolicy ( Qt::StrongFocus );

阅读集焦点策略文档

然后

MyQMainWindow::keyPressEvent(:keyPressEvent(QKeyEvent *pevent)
{
    if (pevent->key() == Qt::Key_Control)
        qDebug() << "ctrl pressed";
    if (pevent->key() == Qt::Key_A)
        qDebug() << "a pressed";
}