IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Fonctionnement interne de QTimer et de QTimerEvent


Sujet :

Qt

  1. #1
    Invité
    Invité(e)
    Par défaut Fonctionnement interne de QTimer et de QTimerEvent
    Bonjour, j'ai compris récemment que QTimer était une interface de QTimerEvent. J'aimerais savoir comment QTimerEvent fonctionne en interne et j'aimerais savoir à quoi correspond timerId() des deux classes énoncé précédemment. Merci à vous.
    Dernière modification par dourouc05 ; 17/08/2011 à 21h35.

  2. #2
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Par défaut
    Les evènements timer existent dans tout objet héritant de QObject. timerEvent(QTimerEvent*) est appelé lorsqu'un timer défini sur un QObject arrive à échéance, et le timerId() retourne un int pour reconnaître lequel.

    Tout cela est expliqué dans la doc Qt à QObject::startTimer()

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 150
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    D'après moi, le timerId n'est pas une chose ultra utile pour l'utilisateur. ( A part s'il veut réimplémenté un Timer personnalisé, en héritant la classe, et encore )
    Internalement, d'après moi ( faudra un jour que je regarde le code ), Qt doit avoir une liste de timer. Donc chacun de ces timer à un id ( ou index dans la liste ). La doc dit que lorsqu'un timer est terminé, l'indice est à -1, ( donc certainement plus présent dans la liste ).
    À chaque start(), on va activer le timer ( démarrage coté du système ), mis en place dans la liste.
    L'avantage d'avoir un indice, c'est que si l'utilisateur fait deux fois start de la même instance, on peut arrêter et redemarrer le timer, au lieu de le demarrer deux fois ( ce qui poserai surement des problèmes ).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Pour le code source : http://qt.gitorious.org/qt/qt/blobs/...er.cpp#line215

    QTimer fonctionne en interne simplement en appelant QObject::startTimer. C'est une API haut niveau permettant d'utiliser les TimerEvent sans devoir gérer des id.

    QObject::startTimer crée un timer dans le QEventDispatcher qui gère en interne la boucle d'event (http://qt.gitorious.org/qt/qt/blobs/...t.cpp#line1586). Ce QEventDispatcher est OS dépend. Tu as par exemple le code pour windows là : http://qt.gitorious.org/qt/qt/blobs/...in.cpp#line582.

    Doncà priori, le fonctionnement des TimerEvent est comme le dit LittleWhite : il y a en interne une liste d'id. A chaque cycle de la boucle d'event, on décompte les timers actifs. Si l'un d'eux est à 0, on lancer un TimerEvent et on remet le compteur à sa valeur initiale.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/08/2006, 21h51
  2. Fonctionnement interne
    Par menzlitsh dans le forum Windows XP
    Réponses: 7
    Dernier message: 30/03/2006, 23h32
  3. Fonctionnement interne des outils de gestions de paquets
    Par Spoutnik dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 14/03/2006, 13h52
  4. Fonctionnement interne de l’OpengGL
    Par Ekinoks dans le forum OpenGL
    Réponses: 10
    Dernier message: 06/12/2005, 14h44
  5. Question sur le fonctionnement interne au moteur PHP
    Par Leviathan_72 dans le forum Langage
    Réponses: 3
    Dernier message: 25/11/2005, 01h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo