Bonjour à tous,
Savez vous si il est possible de faire une condition "ou" sur l'appui de bouton ?
Je m'explique . Pour ceux qui m'on pas suivis, j'aimerais piloter un robot avec mon app. Pour ce faire, j'ai 4 boutons avancer, reculer, droite et gauche.
Pour le moment j'ai réussis à le faire avancer et reculer parfaitement(ce fut laborieux quand même ). Cependant je trouve mon code pas propre car, il utilise 2 méthodes par boutons ( pressed et released).
Ce qui me ferais au total 8 méthodes. c'est lourd ! ( mais faisable j'en convient) .
Etant perfectionniste, je souhaiterais savoir la faisabilité de connaitre si l'un de 4 boutons et pressé ou relâché alors j'effectue une méthode. Et le choix du bouton se fera dans la méthode.
Ainsi je n'aurais que 2 méthodes ( pressed et released). et à l'intérieur de ces deux méthodes, je regarde quel bouton à été pressé ou relâché ?
Voici une partie de mon Header :
Et de mon .ccp :
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
18
19
20
21
22
23
24
25
26
27 //******************************************************************************************************** // Ici je créer mes slots public pour que l'utilisateur puisse s'en servir //******************************************************************************************************** public slots: void on_Bouton_Av_released(); void on_Bouton_Av_pressed(); //slot click du bouton quand on click sur le bouton pour avancer void on_Bouton_Ar_released(); void on_Bouton_Ar_pressed(); //slot click du bouton quand on click sur le bouton pour Reculer void on_BoutonConnexion_clicked(); // slot pour se connecter au port void on_BoutonDeconnexion_clicked(); // slot pour se DEconnecter du au port //******************************************************************************************************** // Ici je créer des attributs privés pour ne pas que les utilisateurs puissent les modifiés //******************************************************************************************************** private: Ui::MainWindow *ui; QSerialPort serial; // Je créer un attribut de type QSerialPOrt que je nomme "serial" QByteArray trame_Av = QByteArray("\x02\x00\x06\x96\x80\x80\x80\x00\x80\x92",10); QByteArray trame_Ar = QByteArray("\x02\x00\x06\x64\x80\x80\x80\x00\x80\x60",10); QByteArray trame_St = QByteArray("\x02\x00\x06\x80\x80\x80\x80\x00\x80\x84",10); };
Peut être existe-t-il d'autre façon de faire . Je suis preneur de chaque idée, pour m’améliorer !
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 /************************************************************************** méthodes **************************************************************************/ /************************************************************************** Cette fonction envoi la trame pour AVANCER quand on clic sur le Bouton Le Bouton est configuré en auto-repaeat avec delay 100ms **************************************************************************/ void MainWindow::on_Bouton_Av_pressed() { if( ui->Bouton_Av->isDown() ) { serial.write(trame_Av); // J'envoie la trame au port serie } else { serial.write(trame_St); // J'envoie la trame au port serie } } // Cette fonction envoi la trame pour ARRETER quand on relache le Bouton void MainWindow::on_Bouton_Av_released() { if( !ui->Bouton_Av->isDown() ) { serial.write(trame_St); // J'envoie la trame au port serie } else { serial.write(trame_Av); // J'envoie la trame au port serie } } /************************************************************************** Cette fonction envoi la trame pour RECULER quand on clic sur le Bouton Le Bouton est configuré en auto-repaeat avec delay 100ms **************************************************************************/ void MainWindow::on_Bouton_Ar_pressed() { if( ui->Bouton_Av->isDown() ) { serial.write(trame_Ar); // J'envoie la trame au port serie } else { serial.write(trame_St); // J'envoie la trame au port serie } } // Cette fonction envoi la trame pour ARRETER quand on relache le Bouton void MainWindow::on_Bouton_Ar_released() { if( !ui->Bouton_Ar->isDown() ) { serial.write(trame_St); // J'envoie la trame au port serie } else { serial.write(trame_Ar); // J'envoie la trame au port serie } }
Merci
Partager