0

たとえば、さまざまな方法で処理する必要がある2種類のキーがあります。だから、私は押されたキーの種類を決定する必要があります。キーを信号レベルで分離できます。つまり、どのキーが押されたかを判別し、適切な信号を発します。

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

または、1つのスロットですべての信号をキャッチし、ここでキータイプを処理できます。

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

どの方法がより好ましいですか?

4

1 に答える 1

0

http://qt-project.org/doc/qt-4.8/qkeyevent.html#keyを見てください。 これは、押されたキーの int コードを提供します:)

または、キーイベントのユニコードを返す QKeyEvent::text() を見ることができます

編集: @あなたのコメント

スラッシュ キーを処理し、他のすべてを破棄する場合は、アプローチ #2 を使用します。

于 2013-03-20T09:49:42.747 に答える