【问题标题】:Where to determine what key was pressed在哪里确定按下了什么键
【发布时间】:2013-03-20 09:14:20
【问题描述】:

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

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
    }
}

哪种方式更可取?

【问题讨论】:

    标签: qt optimization event-handling signals keyevent


    【解决方案1】:

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

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

    编辑:@你的评论

    如果您想处理斜线键并丢弃所有其他键,我会采用方法 #2。

    【讨论】:

    • 我知道如何确定密钥,不知道哪种方式更好。
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多