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 :

Créer un QTimer

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Créer un QTimer
    Bonjour,

    j'ai un petit problème et je n'arrive pas a trouver la solution . Mon problème est le suivant: j'ai besoin de créer un QTimer dans une classe, je vous montre le code du .h
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    #ifndef ATMEGA88_H
    #define ATMEGA88_H
     
    #include <QHash>
    #include <QVector>
    #include <QHashIterator>
    #include <QString>
    #include <QTimer>
     
    #include "SerialCom.h"
     
    class Atmega88 : QObject
    {
        Q_OBJECT
     
        public:
            Atmega88();
            ~Atmega88();
     
        private:
            QTimer timer;
            SerialCom *serialPort;
            bool clock;
            bool programmingEnb;
            bool flagCLK;
            QByteArray DeveiceID;
            QHash<QString,char> fuseBits;
            QHash<QString,char> lockBits;
            QVector<QString> fuseBKeys;
            QVector<QString> lockBKeys;
     
            void createHashFuseBits( QHash<QString,char>  );
            void createHashLockBits( QHash<QString,char>  );
            void setFBKeys( QVector<QString>  );
            void setLBKeys( QVector<QString>  );
     
            void clk( const bool );
            void setFlagCLK( bool );
            void send( const unsigned char );
            unsigned char receive();
            void cmdProgram();
            bool getFlagProgrammingEnable();
            void setFlagProgrammingEnable();
     
        public:
            void readFuseBits();
            void readLockBits();
            void readDevideID();
     
            void writeFuseBits();
            void writeLockBits();
            void writeRom();
            void writeEeprom();
     
            QHash<QString, char> showFuseBits();
            QHash<QString, char> showLockBits();
            QVector<QString> fuseBitsKeys();
            QVector<QString> lockBitsKeys();
     
        private slots:
            void setTimeOut();
    };
     
    #endif // ATMEGA88_H
    et le code du .cpp
    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
    27
    28
    29
    30
    31
    32
    33
     
    /*
    * Constructor
    */
    Atmega88::Atmega88()
    {
        clock = false;
        programmingEnb = false;
        flagCLK = false;
     
        timer.setParent(this);
        connect(timer, SIGNAL(timeout()), this, SLOT(setTimeOut()));
     
        serialPort = new SerialCom();
        serialPort->openSerialCom();
     
        serialPort->setDTR(LOW); 
        serialPort->setRTS(LOW);
     
        createHashFuseBits(fuseBits);
        createHashLockBits(lockBits);
     
        setFBKeys(fuseBKeys);
        setLBKeys(lockBKeys);
    }
     
    /*
    * Destructor
    */
    Atmega88::~Atmega88()
    {
        delete serialPort;
    }
    ce que je viens de faire je l'ai trouvé dans la FAQ, mais ça ne compile pas et ça donne une erreur sur le connect. Est ce que quelqu'un peut m'aider?

    Merci,
    RCosta.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(timer, SIGNAL(timeout()), this, SLOT(setTimeOut()));
    le connect utilise des pointeur sur le QObject. Comme timer est un mebre de ta classe, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(&timer, SIGNAL(timeout()), this, SLOT(setTimeOut()));

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci de ta réponse Yan,
    je viens de faire ta suggestion mais ça continue a ne pas compiler, maintenant le compilateur me dit: undefined reference to `vtable for Atmega88'

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 630
    Points : 188 616
    Points
    188 616
    Par défaut
    Utilises-le qmake, ou un plug-in Qt pour ton EDI ? Si non, alors fais-le : il automatise le passage de tes ficheirs au MOC, et inclut les fichiers générés nécessaires au binaire, ce qui évite une énorme majorité des undefined references to vtable (cf FAQ : http://qt.developpez.com/faq/?page=qt4Core#linkvtable).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Douroc05,
    j'utilise Qt Creator.

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Juste pour info elle est ou la définition du slot setTiemOut() dans ton .cpp ?
    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 à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    La déclaration du slot setTimeOut() est sur mon .h, mais maintenant ça compile, j'ai éliminé tous les fichiers moc et les makefile et en suite j'ai compilé tout a nouveau. Mais (il y a toujours un mais) mon timer a l'air de qui ne travaille pas, mais j'ai n'est pas eut encore le temps de debugger a fond. Merci a tous pour vos réponses et votre aide.

  8. #8
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Citation Envoyé par RCosta Voir le message
    La déclaration du slot setTimeOut() est sur mon .h, mais maintenant ça compile, j'ai éliminé tous les fichiers moc et les makefile et en suite j'ai compilé tout a nouveau. Mais (il y a toujours un mais) mon timer a l'air de qui ne travaille pas, mais j'ai n'est pas eut encore le temps de debugger a fond. Merci a tous pour vos réponses et votre aide.
    J'ai bien vu la declaration dans le .h mais pas la définition dans le .cpp....
    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.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Tu as raison tu l'a pas vu parce que je n'est pas mis tout le code du .cpp, alors voilà la déclaration dans le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*
    *
    */
    void Atmega88::setTimeOut()
    {
        setFlagCLK(true);
    }

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

Discussions similaires

  1. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22
  2. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10
  3. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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