1

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

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

这工作正常

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

编辑:keyReleaseEvent 适用于这些字母。

4

2 回答 2

1

尝试这个:

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

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

于 2014-01-09T09:28:28.417 回答
1

不确定你是否仍然需要它,但也许有人会。

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

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

this->setFocusPolicy ( Qt::StrongFocus );

阅读setFocusPolicy文档

然后

MyQMainWindow::keyPressEvent(:keyPressEvent(QKeyEvent *pevent)
{
    if (pevent->key() == Qt::Key_Control)
        qDebug() << "ctrl pressed";
    if (pevent->key() == Qt::Key_A)
        qDebug() << "a pressed";
}
于 2015-05-22T15:39:31.440 回答