Bonjour à tous,
Je souhaite détectée l'appui sur une touche disons le "Z" pour envoyer un message sur le port série pour faire avancer mon robot.
Voila ou je bloque, je souhaiterais faire une action lors de l'appui sur une touche et répétée cette action tant que la touche est enfoncée.
Mais quand la touche n'est plus enfoncée( mais qu'elle l'a été) faire une autre action .
Touche "Z" enfoncée : envoie d'un ordre par le port série. par boucle toute les 100ms afin de faire avancer le robot(avec la fonction repeat).
Touche "Z" relâchée, envoie d'un ordre pour arrêter les moteurs.
Le problème c'est que la méthode KeyPressEvent, fais un repeat des autres méthodes de keyreleaseEvent par exemple . Totu comme "pushbutton"
Avez vous une solution pour parer à ce probléme ?
Dans un ancien post ( LIEN ) j'avais trouvé une solution de contournement pour al fonction "pushbutton" avec " isDown". Mais avec les touches du clavier nous n'avons pas cette option de disponible.
Voici mon code qui me permet seulement de faire des tests pour le moment, histoire de mettre au point le comportement parfait .
Ce code affiche donc alternativement GO et STOP quanbd je laisse la touche "Z" enfoncée.
Alors que je souhaiterais que des "GO" et des que je la relâche un "STOP" .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /************************************************************************** méthodes **************************************************************************/ void MainWindow::keyPressEvent(QKeyEvent *ev) { if (ev->key() == Qt::Key_Z) { qDebug()<<"GO"; } } void MainWindow::keyReleaseEvent(QKeyEvent *) { qDebug()<<"STOP"; }
Sinon j'avais pensé a faire imiter l'appui sur un bouton quand on appui sur une touche ? mais je sais pas si ca existe ? Du genre j’appuie sur "Z" et ca enfonce le bouton ainsi je pourrais me servir de la routine du bouton plutôt que celui de la touche ?
Merci à vous
Partager