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 :

Comment bloquer une fonction pour laisser le temps de faire une animation graphique ?


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Comment bloquer une fonction pour laisser le temps de faire une animation graphique ?
    Bonjour,
    j'aurais besoin d'une de vos lumieres

    Je vous explique dans quel cas je veux bloquer ma fonction:

    _ J'ai une application graphique qui affiche un echange. Cette application a sa propre classe.
    _ Dans une autre classe on a une fonction "echange" qui indique à l'application graphique que nous devons animer un echange (on emet un signal)


    On sait bien qu'une animation prend du temps, et que les instrucitons d'echanges sont rapides.
    Je veux donc faire attendre la fonction echange.


    J'ai trouvé un moyen avec une fonction qqconque "QTest::qWait( temps d'attentes )"
    L'attente se fait bien et j'anime l'echange on a le temps de visualiser et j'peux passer a l'echange suivant, et ainsi de suite

    Mais je sais que j'peux ameliorer mon application car le temps d'attente varie.

    Voila mon idee:

    DEBUT Algo dans ma tete:

    1 - Je me trouve dans la fonction echange, J'indique que je veux echanger en emettant un signal à la classe graphique.

    2- Pour attendre le deroulement de l'animation, je bloque ma fonction (ici se trouve le probleme)

    3- Dans la classe graphique j'anime l'echange.
    J'ai un moyen de savoir que l'echange est terminee! J'emet donc un signal finAnimation recu par la classe echange.

    4- Lorsque la classe echange recoit ce signal , normalement on doit debloquer dans la fonction echange (ici c'est la fin du probleme lol)

    FIN Algo dans ma tete.

    Mon soucis ici, c'est que des que ca marche quand je fais un simple cin>> mais je dois taper dans la console un entier pour que ca continue et ca debloque le cin!!! et un autre soucis .. cela freeze mon application graphique donc on voit pas l'animation !

    Resume:

    _ Lorsque je recois le signal finAnimation, cela enclenche la fonction suivante :

    void echangeFini() { // Debloque la fonction>> }

    Que dois-je faire pour indiquer la fin du blocage ?
    J'ai essayé des tubes/pipes de communications mais ces appels sont "trop" bloquant ca freeze mon application graphique comme le cin. Une SOLUTION ?

    J'espere que vous regarderez, car c'est vraiment vite fait comme probleme

    Merci d'avance.

    Cordialement M Salhi

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Bonjour,
    je pense que tu n'as pas le choix.
    Faut que tu utilise des thread.
    Regarde les QThread.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Je me doc sur le QThread ca à l'air interessant

    Ca vous derangerez de m'aider à savoir comment utiliser le thread dans mon cas ?
    Paceke j'ai 2 classes et un main donc ... comment utiliser mon QThread pour que mon appli marche ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Bonjour,
    c'est ce qu'est un thread?

    En faite le but serait de déplacer une partie (ou la totalité) du traitement dans la thread, qui envéra un signal pour dire qu'elle as fini et donc qu'il faut rafraichir l'affichage. Cela permet de ne pas figé l'affichage

    voici des exemples d'utilisation
    http://qt.developpez.com/doc/4.3/examples/#threads

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    C bon ca marche !!

    J'te remercie beaucoup pour cette astuce ...

    Je sais que pour certains c logique l'm d'utiliser QThread pour ne pas que l'affichage se freeze mais je debute donc

    Voilà pour ceux qui navigue sur ce topic: si vous avez une application qui utilise plusieurs taches et que vous voulez bloquer une application le temps de l'execution d'une autre suffit de bien se plonger dans ce fameu QThread

    Bon courage à tt l'monde pr la suite et encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2012, 01h18
  2. Réponses: 12
    Dernier message: 09/11/2009, 19h56
  3. Réponses: 2
    Dernier message: 28/11/2008, 15h56
  4. Renommer une fonction dans un select ou concevoir autrement une fonction
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 30/05/2008, 17h17
  5. Réponses: 13
    Dernier message: 31/03/2008, 09h14

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