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 :

Creer une horloge dans une fenetre avec qt designer


Sujet :

Qt

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut Creer une horloge dans une fenetre avec qt designer
    Bonjour,
    j'essaye de trouver l'aide dans la création d'une horloge dans la fênetre qt designer. l'affichage de l'heure sera dans un composant QLIneEdit.
    J'ai créer le code mais le probleme c que ca bloque, car j'ai fait une boucle infinie.
    voici mon code :


    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
     
     
    void Form1::heure()
    {
     
       while(1)
        {
       time_t t;
       time(&t);
       a_heure ->setText(ctime(&t));// inserser le resultat dnas un composant    
                                                           qlineedit
       sleep(1);
       a_heure->clear();
       }
     
    }
    merci d'avance

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Pour afficher l'heure toute les secondes, il est de très loin préférable d'associer un QTimer dont la période est à 1000ms à un slot mettant à jour ta QLineEdit en lisant l'heure à partir de QTime.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Salut,

    Pour afficher l'heure toute les secondes, il est de très loin préférable d'associer un QTimer dont la période est à 1000ms à un slot mettant à jour ta QLineEdit en lisant l'heure à partir de QTime.
    bonjour;
    merci pour l'idée mais j'ai pas très bien compri ou fau'il inserer Qtimer:
    je suis sur qt3 designer. j'ai trouvé ce code sur le net:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    2
      m_leTimer = new QTimer(this);
    3
      connect(m_leTimer, SIGNAL(timeout()), this, SLOT(f_avance()));
    4
      srand(time(0));
    5
      f_marques();
    6
    7
    mais je sais pas ou l'inserer...
    jai au debut un "MAin windows".
    merci

  4. #4
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Est-ce que tu as compris ce que fait ce code? Est-ce que tu peux me dire en quoi il te sera utile?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Est-ce que tu as compris ce que fait ce code? Est-ce que tu peux me dire en quoi il te sera utile?
    je veux creer un signal qui ce déclenche à chaque temps donnée..il va faire appel à une fonction qui incrémente le temps..je pense c comme les sigaux posix en c..

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par mansour67 Voir le message
    je veux creer un signal qui ce déclenche à chaque temps donnée..il va faire appel à une fonction qui incrémente le temps..je pense c comme les sigaux posix 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
     
    #include <qapplication.h>
    #include <qtimer.h>
    #include "form1.h"
    #include <qlabel.h>
    #include <time.h>
    #include <iostream.h> 
    #include <stdlib.h>
     
    int main( int argc, char ** argv )
    {
        QApplication a( argc, argv );
     
        Form1 w;
        w.show();
        a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
        return a.exec();
     
      QTimer *timer = new QTimer(w);
      w.connect(timer, SIGNAL(timeout()), w, SLOT(heure()));
      timer->start(2000); 
     
     
    }

    j'ai une erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    main.cpp:19: erreur: no matching function for call to «QTimer::QTimer(Form1&)"
    /usr/include/qt3/qtimer.h:76: note: candidats sont: QTimer::QTimer(const QTimer&)
    /usr/include/qt3/qtimer.h:50: note:                 QTimer::QTimer(QObject*, const char*)
    main.cpp:20: erreur: no matching function for call to «Form1::connect(QTimer*&, const char [11], Form1&, const char [9])"
    /usr/include/qt3/qobject.h:116: note: candidats sont: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*)
    /usr/include/qt3/qobject.h:226: note:                 bool QObject::connect(const QObject*, const char*, const char*) const
    make: *** [.obj/main.o] Erreur 1

  7. #7
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Le timer doit être membre de ta classe ici, dans form1 donc. Maintenant, je te conseillerais assez de laisser tomber Qt quelques semaines le temps d'apprendre le C++, parce que tu ne sais apparemment même pas ce que fait le mot clé return :/

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Le timer doit être membre de ta classe ici, dans form1 donc. Maintenant, je te conseillerais assez de laisser tomber Qt quelques semaines le temps d'apprendre le C++, parce que tu ne sais apparemment même pas ce que fait le mot clé return :/
    oh.. c pas unb on moyen pour m'encourager ,j'ai pas de soucis en c++ mais ls qt c nouveau pour moi. bref..
    voila ce que j'ai fait.
    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
    23
    24
    25
     
     
    #include <qapplication.h>
    #include <qtimer.h>
    #include "form1.h"
    #include <qlabel.h>
    #include <time.h>
    #include <iostream.h> 
    #include <stdlib.h>
     
    int main( int argc, char ** argv )
    {
        QApplication a( argc, argv );
     
        Form1 w;
        w.show();
        a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
     
         QTimer * timer = new QTimer(w);
         connect( &timer, SIGNAL(timeout()), w, SLOT(heure()) );
         timer->start(1000, FALSE );
     
     
        return a.exec();
    }
    après compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    main.cpp: In function «int main(int, char**)":
    main.cpp:18: erreur: no matching function for call to «QTimer::QTimer(Form1&)"
    /usr/include/qt3/qtimer.h:76: note: candidats sont: QTimer::QTimer(const QTimer&)
    /usr/include/qt3/qtimer.h:50: note:                 QTimer::QTimer(QObject*, const char*)
    main.cpp:19: erreur: «connect" was not declared in this scope
    make: *** [.obj/main.o] Erreur 1
    par contre j'ai fait ca avant , mais j'ai qu'un signal alors que je veux des signaux à chaque seconde.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     #include <qapplication.h>
            #include <qtimer.h>
     
            int main( int argc, char **argv )
            {
     
    Form1 w;
        w.show();
    QApplication a( argc, argv );
                QTimer::singleShot( 1*60*1000, &w, SLOT(heure()) );
     
                return a.exec();
            }

    merci d'avance

  9. #9
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Le timer doit être membre de ta classe ici, dans form1 donc.
    Et si tu as un souci avec le C++ si tu pense qu'un code mis après un return non conditionnel est exécuté. Je dis pas ça pour te décourager, mais parce que tu as des lacunes à combler en dehors de Qt.

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Et si tu as un souci avec le C++ si tu pense qu'un code mis après un return non conditionnel est exécuté. Je dis pas ça pour te décourager, mais parce que tu as des lacunes à combler en dehors de Qt.
    C pas grave,, que pensez vous de mes deux exemples? svp

  11. #11
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Je vais me re-citer une 2ème fois:
    Citation Envoyé par IrmatDen Voir le message
    Le timer doit être membre de ta classe ici, dans form1 donc.

  12. #12
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Je vais me re-citer une 2ème fois:
    je suis un peu chaint mais, j'ai pas bien compris..
    je cree un objet timer d la classe QTIMER,
    je le connecte à une foction dans FORM1.
    je lance un signal à chaque minute;

  13. #13
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Bon, je vais tenter une autre formulation:
    Il faut que ton instance de QTimer soit une variable membre de ton widget, et donc de la classe qui le représente.

  14. #14
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Bon, je vais tenter une autre formulation:
    Il faut que ton instance de QTimer soit une variable membre de ton widget, et donc de la classe qui le représente.
    oui mais comment faire pour l'inserer dans mon widget? merci

  15. #15
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    T'as l'air d'utiliser le designer y compris pour le code, donc c'est marqué ici:
    http://qt.developpez.com/doc/3.3/designer-manual-3.html
    => § "Writing the Code" (désolé, pas de lien direct sur le bon §)

    Ca t'expliquera comment créer des variables membres, des slots persos, et ajouter ton code.

  16. #16
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Mansour > IrmatDen n'essaye pas du tout de te décourager, bien au contraire !
    S'il te dit ça, c'est que tu ne comprends pas le vocabulaire usuel de C++ ce qui laisse supposer que tu as des lacunes en C++.

    Pour résoudre ton problème, en effet, tu dois mettre un QTimer dans ton widget qui contient les autres.
    Le QTimer emet un signal (mentionné par IrmatDen) qui est à rattacher à ton QLabel. Le QLabel sera ainsi capable de mettre à jour l'heure affichée.

  17. #17
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    T'as l'air d'utiliser le designer y compris pour le code, donc c'est marqué ici:
    http://qt.developpez.com/doc/3.3/designer-manual-3.html
    => § "Writing the Code" (désolé, pas de lien direct sur le bon §)

    Ca t'expliquera comment créer des variables membres, des slots persos, et ajouter ton code.
    Je vous remercie , j'ai reussi à trouver la solution

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 20h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 00h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 11h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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