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

Discussion :

Faire une pause : QTimer ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut Faire une pause : QTimer ?
    bonjour,

    j'ai un bout de prog de capture d'ecran.
    je clic sur le bouton et il prend la capture. mais je voudrais qu'il attende 5 secondes avant de faire la capture.

    est ce que le qtimer est le mieux pour faire cela ?
    j'ai vu qu'il n'y a pas de sleep() portable.
    je suis sous qt, gnu/linux, et mon prog doit tourner sous win et gnu/linux.

    je ne vois pas trop comment faire un qtimer dans le code du bouton pour faire la capture...
    dans la doc, le qtimer est relie a une fonction, mais comment le relier au bouton dans lequel il apparait ?
    ou encore, comment lancer un qtimer au demarrage de l'application ?

    je m'exprime mal je crois, mais j'sais pas comment expliquer mon pbm...

    si je pouvais avoir un ptit example svp,
    merci d'avance.

  2. #2
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Sous Qt, j'ai souvenir que la classe QThread permettait de faire un sleep:
    QThread::currentThread ()->wait(5000).

    Sinon en passant par QTimer, la procédure est la suivante:
    - connecter le signal "clicked" du bouton au slot "start" du timer
    - connecter le signal "timeout" du timer à ta fonction de capture.
    - pas oublier de paramétrer le timer (setSingleShot(true) et setInterval(5000))

  3. #3
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    pour le qthread, voila ce qu'il m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Thread tried to wait on itself
    et pas de pause.

    pour le qtimer, ça semble bien complique...

    merci de l'aide ;-)

  4. #4
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Autant pour moi, la fonction wait ne peut pas etre appelée depuis le thread en question. Pour le QTimer, la solution n'est vraiment pas compliquée, ca ressemble à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    QPushButton button("Mon boutton");
    	QTimer timer;
    	timer.setSingleShot(true);
    	timer.setInterval(5000);
     
    	connect(&button,SIGNAL(	clicked ( bool) ),&timer,SLOT( start() ));
    	connect(&timer,SIGNAL( timeout() ),&UnWidget,SLOT(MaFonctionDeCapture()));

  5. #5
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    En fait j'ai pas bien compris. Tu veux que quand tu clic sur le bouton en gros sa lance ta fonction de capture que 5s apres le clique c'est bien ça ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  6. #6
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    oui, c'est bien ça.

    merci pour les explications, je vais tester ça.

  7. #7
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Dans tous les cas, mieux vaut passer par un QTimer, plutôt que de bloquer toute l'interface avec un sleep mal placé (blocage de la boucle d'évènement principale, plus de repaint, plus de signal...).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/11/2005, 17h33
  2. [console]Comment faire une pause?
    Par aminee009 dans le forum MFC
    Réponses: 5
    Dernier message: 20/10/2005, 10h33
  3. Faire une pause
    Par loutente dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 17h23
  4. Faire une pause dans le programme
    Par shinobi dans le forum Access
    Réponses: 6
    Dernier message: 13/06/2005, 16h37
  5. [MFC] Faire une pause dans un thread
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 21/02/2005, 11h49

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