Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2368 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  affichage d'un compte à rebours avec Qt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

affichage d'un compte à rebours avec Qt

n°1730817
benito5965​0
Posté le 12-05-2008 à 12:12:26  profilanswer
 


 
Bonjour à tous
 
Je souhaite réaliser un compte à rebourd, et afficher le temps qui passe. J'ai donc utilisé QTimer, et pour j'ai pensé utliser un QLCDNumber. J'ai créé une nouvelle classe héritant de QTimer pour créer un signal qui emet le temps qui reste du QTimer, je vous met le constructeur de mon QTimer personnalisé :
 

Code :
  1. MyQTimer::MyQTimer(QObject * parent) : QTimer(parent)
  2. {
  3.     int i=4;
  4.     while (isActive()==true)
  5.     {
  6.         if (timerId()==1000*i)
  7.         {
  8.             emit tempsEcoule(i);
  9.             i--;
  10.         }
  11.     }
  12. }


 
Et voilà la connexion que je fais dans ma classe qui utilise MyQTimer:
 

Code :
  1. MyQTimer* timer = new MyQTimer;
  2. timer->start(5000);
  3. QLCDNumber* m_lcd = new QLCDNumber(this);
  4. m_lcd->setSegmentStyle(QLCDNumber::Flat);
  5. QObject::connect(timer, SIGNAL(tempsEcoule(int)), m_lcd, SLOT(display(int)));


 
Mais le problème c'est que QLCDNumber. reste à zero, je ne comprend pas vraiment pourquoi.
 
Pouvez-vous m'aider?
 
Merci
 
 
 
 
 

mood
Publicité
Posté le 12-05-2008 à 12:12:26  profilanswer
 

n°1730824
bjone
Insert booze to continue
Posté le 12-05-2008 à 12:55:40  profilanswer
 

un polling bloquant dans un constructeur ça pue:
- ça bloque au niveau du new MyQTimer, donc avant le start() (donc ça marche pas)
 
ensuite si le timer est orienté message, t'as des aléas donc il faut mesurer le temps un plus précisément (avec un QueryPerformanceTimer sous win32, a voir pour les autres os ou si Qt a une encapsulation de ça)
enfin ça dépends du niveau de blaireaumétrie souhaité de ton chronomètre :D


Message édité par bjone le 12-05-2008 à 13:15:10
n°1731250
IrmatDen
Posté le 13-05-2008 à 16:34:56  profilanswer
 

Salut,
 
Comme le dis bjone, faut pas boucler comme ça, puisque tu bloques l'exécution. Il vaut mieux faire un QTimer dont le timeout est émis toutes les 1000 ms, et connecté le signal timeout à un slot de ta classe faisant le calcul, et arrêtant le timer dès qu'il arrive à 0. Et c'est dans ce slot que tu met à jour l'affichage.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  affichage d'un compte à rebours avec Qt

 

Sujets relatifs
Affichage des dossiersaffichage flux camera
problème Signal/Slot avec classes imbriquées avec QtOptimisation Flash pour affichage HTML [Résolu]
affichage resultats en PHPCréation d'un compte windows à distance sur X postes
affichage d'une composante d'un objet dans un jtabbedpane[Résolu] Affichage de la déconnexion d'un utilisateur
Affichage Frame sur internet Explorer 
Plus de sujets relatifs à : affichage d'un compte à rebours avec Qt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR