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 :

Chronometre c++ Qt creator

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut Chronometre c++ Qt creator
    Bonjour !
    Bon, je suis une grosse quiche en C++ . J'essaie de faire un chronometre avec Qtcreator. Donc pour l'instant, j'ai fait que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      QTimer *timer = new QTimer(this);
         connect(timer, SIGNAL(timeout()), this, SLOT(update()));
         timer->start(1000);
    Je voudrais savoir comment faire pour que mon chronometre s'arrete au bout de 120 secondes ??? j'ai essayé avec la fonction stop(), mais ça n'a pas l'air de marcher avec QtCreator.
    En plus, je n'arrive pas à l'afficher !!!

    Merki

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Je ne sais pas si c'est la meilleur solution car je n'ai jamais utilisé la classe QTimer mais a mon avis tu comptes le nombre de fois que ta fonction update est appelé et au bout de 120 fois tu stops le timer.
    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.

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut
    J'essaye mais j'arrive pas à définir comment lui donner une durée limitée....... j'suis completement bloquée alors que je suis sure que c'est un truc tout bête !

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Je comprends pas quand tu dis une durée limité ?
    D'après ton code tu crée un timer qui execute la fonction update toutes les secondes. Donc tu fais un compteur dans la fonction.

    Le principe en gros c'est ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void MyDialog::update()
    {
      static int cnt=0;//C'est ton compteur du nombre de fois que la fonction est appelé
       if(cnt >= 120)//Si sa fait 120 fois donc 120 secondes de passé
       {
          timer->stop();//Tu arretes le compteur
          cnt=0;//Tu remets le compteur à zeros
        }
        else
        {
          cnt++;//Sinon tu incrementre le compteur
        }
    }

    En gros c'est le principe. A toi d'adapter cela à ton code.
    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.

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut


    Merci ! ça marche (presque) !!
    le chrono se lance, il s'affiche dans un lcdnumber et change toutes les secondes, pas de problème. Seulement il affiche : 1, 2, 4, 8, 16, 32.................. C'est un peu embêtant quand même ! Pourtant dans les propriétés du lcdnumber, j'ai bien mis "mode : Dec", et dans la définition des slots : setDecMode().... !!!

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Citation Envoyé par pounette6431 Voir le message


    Merci ! ça marche (presque) !!
    le chrono se lance, il s'affiche dans un lcdnumber et change toutes les secondes, pas de problème. Seulement il affiche : 1, 2, 4, 8, 16, 32.................. C'est un peu embêtant quand même ! Pourtant dans les propriétés du lcdnumber, j'ai bien mis "mode : Dec", et dans la définition des slots : setDecMode().... !!!
    Je suis desolé mais comme ça je ne vois pas. Tu devrais poster ton code source peut etre je pourrai plus t'aider.
    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.

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MyDialog::update()
    {
      static int cnt=0;
      // [...]
    }
    Mmm... Pas très joli !

    Veux mieux définir "cnt" comme variable de classe : on est en C++ !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class MyDialog : public QDialog {
    private :
    int cnt;
    // [...]
     
    private slots :
    void update() {
       if(cnt >= 120) {
          timer->stop();
        } else {
          cnt++;
          // Et là tu peux changer la valeur de ton "lcdnumber"
        }
    }
    };
    Et au moment où tu lance ton QTimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       cnt = 0;
       timer->start ();

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Par défaut
    J'ai suivi la méthode de superjaja, mais c'est pas ça ! en fait dans ton code, au lieu de faire un seul QTimer de 120 secondes, on en fait 120 de 1 seconde chacun. Du coup j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    void Dialog::f_creerchrono()
    {
     
    QTimer *timer = new QTimer(this);
         connect(timer, SIGNAL(timeout()), this ,SLOT(f_creerchrono()));
         timer->start(1000);
     
    double ancien = ui->chrono->value();
     
    if (ancien<60)
    {
        ui->chrono->display(ancien+1);
     
    }
    else
    {
       timer->stop();
    }
     
     
     
    }
    mais apparament j'en créé toujours plusieurs là, et mon prof de programmation se fout de ma gueule

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/09/2005, 09h55
  2. [LG] Chronomètre en Pascal
    Par james-dean dans le forum Langage
    Réponses: 8
    Dernier message: 02/09/2005, 09h08
  3. Nom de fichier PDF Creator
    Par le_parrain dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/02/2005, 18h11
  4. Réponses: 1
    Dernier message: 26/08/2004, 16h23
  5. 3D games creator
    Par SQUAL dans le forum DirectX
    Réponses: 2
    Dernier message: 21/02/2003, 17h44

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