9
votes

Comment obtenir plusieurs appuis en clé en un seul événement?

Je crée une application, où appuyez sur la presse "Flèche + Down Down". Il n'est pas identique à la première flèche gauche, puis flèche gauche), actuellement dans l'événement KeighpresserEvent, je les reçois un par un sur deux distinct appels.

Y a-t-il un moyen par lequel je peux obtenir plusieurs keypress dans un événement de clavier?

qt

3 commentaires

Êtes-vous sûr qu'ils ne sont pas | 'ed ensemble quand vous les tenez ensemble?


@Redx, non je ne les reçois pas | `ed


Dupliquer de Stackoverflow.com/Questtions/3081091/qt-multiple -key-combo-ev ent


3 Réponses :


1
votes

Rien n'est "en même temps" et je crois en Qt, vous ne pouvez pas avoir ce type de comportement (à l'exception des touches de modificateur comme Shift, ALT, etc.).

Approchez le problème d'une manière différente. Lorsque vous recevez une des clés, vérifiez si vous avez reçu l'autre en un court moment, dites 20MS avant.


1 commentaires

Il s'agit d'informations très utiles sur la combinaison de touches dans la touche QT.



9
votes

J'ai résolu le problème en dessous du code.

QSet<Qt::Key> keysPressed;

void Widget::keyPressEvent(QKeyEvent * event) {
    m_bFirstRelease = true;
    keysPressed+= event->key();
}

void Widget::keyReleaseEvent(QKeyEvent *) {
    if(m_bFirstRelease) {
        processMultiKeys(keysPressed);
    }
    m_bFirstRelease = false;
    keysPressed-= event->key();
}


1 commentaires

Im obtenir 'impossible de convertir int vers qt :: clé' Ici: qset kéysprimé; Keysprimé + = Event-> Touche (); -> Quel est le problème?



9
votes

Merci pour cela. Je pose du code pour l'équivalent Python (Pyqt) afin que quelqu'un d'autre puisse la trouver utile. XXX


0 commentaires