|
1 month ago | |
---|---|---|
.. | ||
README.md | 1 month ago |
README.md
Signaux et Slots
Le but de ce TP est de manipuler les signaux et slots de QT, depuis C++.
Créez un nouveau projet TP2
- Choisissez un projet Qt. On aura pas besoin du graphique.
Synchronisable
On va continuer une classe fournissants des objets qui se synchronisent.
-
Créez une classe
Synchronisable
héritant de QObject (Ctrl + N). -
Donnez lui une propriété unique
cpt
de type entier, initialisé à 0. -
Utilisez le refactor (click droit sur la
Q_PROPERTY
) pour lui faire générer les membres manquants. -
Lisez tout le code généré. Si vous ne le comprenez pas, appelez moi!
-
Modifiez le signal
cptChanged
pour qu'il prenne en plus un paramêtre un entier, nouvelle valeur du compteur. -
Utilisez
qDebug() << "message" << "\n";
pour afficher un message en console à chaque modification decpt
(pas encore besoin de connecter), en indiquant la nouvelle valeur, ainsi que l'adresse de l'objet. Si le vous ne voyez pas le message s'afficher, vous vérifierez que votre IDE est bien configuré pour vous afficher un terminaml (onglet vertical Projet, sélectionnez Run et cherchez la case à cocher). -
Créez deux
Synchronisables
,a
etb
. Renommez l'application si besoin est. -
Changez la valeur de
a
. Vérifiez l'affichage. -
Connectez
a
àb
de façon à ce que le tout changement de valeur dea
fasse changer la valeur deb
.
Utilisation d'un timer
Vous l'avez compris, en programmation événementielle, on perd la main sur le flot d'exécution. On va donc jouer avec un QTimer
pour générer des signaux périodiquement.
- Ajoutez un slot
inc()
àSynchronisable
. Ce slot incrémente de 1 la valeur du compteur. - Créez un
QTimer
- Connectez le signal émis par le timer au slot
inc
dea
. - Démarrez le timer pour émettre un signal toutes les deux secondes.
- Vérifiez l'affichage.
b
s'incrémente-t-il aussi?