确定按下了哪个键



例如,我有两种需要以不同方式处理的键。我应该确定按下的键是什么类型。我可以在信号电平中分离键,即确定按下的键并发出适当的信号:

void QueryTextEdit::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
        case Qt::Key_Slash :
        {
            emit slashWasPressed();
            break;
        }
        default :
        {
            emit otherKeyWasPressed(event);
            break;
        }
    }
}

或者我可以在一个槽中捕获所有信号并在这里处理键类型:

keyHandler(QKeyEvent *event) {
    if (event->key() == Qt::Key_Slash) {
        // do something
        return;
    } else { 
        // do something
    }
}

哪种方式更可取?

看看http://qt-project.org/doc/qt-4.8/qkeyevent.html#key这提供了被按下的键的int代码:)

或者你可以看看QKeyEvent::text(),它返回键事件的unicode

编辑:@your comment

如果你想处理斜杠键而放弃所有其他键,我会使用方法#2

相关内容

  • 没有找到相关文章

最新更新