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

时间:2014-01-09 09:11:40

标签: c++ qt keypress qkeyevent

我在申请中使用KeyPressEvent。但是从a到z的字母不起作用。

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

这是正常的

但是当我使用Key_RKey_L时,它无效。

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

2 个答案:

答案 0 :(得分:1)

试试这个:

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

或者您只需使用QString QKeyEvent::text () const方法检查键值。

答案 1 :(得分:0)

不确定你是否还需要它,但也许有人愿意。

我遇到了同样的情况,当按下一个z字母时,没有事件被发送到我的QMainWindow,但ctrl,cmd,alt或esc ......正在工作。

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

this->setFocusPolicy ( Qt::StrongFocus );

阅读setFocusPolicy doc

然后

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