You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Francois DELOBEL 660eba90cc
Rangement TP
1 month ago
..
README.md Rangement TP 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 de cpt (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 et b. 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 de a fasse changer la valeur de b.

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 de a.
  • Démarrez le timer pour émettre un signal toutes les deux secondes.
  • Vérifiez l'affichage. b s'incrémente-t-il aussi?