Lancer un Thread en Boucle [C++/Qt]

DrCrow Messages postés 416 Statut Membre -  
 dd -
Bonjour, ^^
j'ai un soucis et j'arrive pas a exécuter un Thread en Boucle ( C++ / Qt )
voici un petit code :

//Includes... 
main.cpp 
------------ 
int main(int argc, char *argv[]) 
{ 

    Thread *myThread = new Thread; 
    myThread->start(QThread::HighPriority); 

//...... 

} 

class Thread : public QThread 
{ 
    public: 
        Thread() 
        { 
            i=0; 
        } 

        void run() 
        { 
            qDebug()<<"Th:1>>> "<<i; 
            i++;   
        } 

    private: 
        int i; 
};


Si je mets un For dans la fonction run, je pourrais plus controler le thread, étant qu'il ne se terminera guerre......
        void run() 
        { 
for(/*....*/) 
{ 
            qDebug()<<"Th:1>>> "<<i; 
            i++;   
} 
        } 


Merci de m'éclaircir sur ce point....

5 réponses

  1. francis
     
    Salut,
    Déjà, déclare la macro Q_OBJECT dans ta classe Thread.

    Ensuite, il faut que tu lance sa boucle evennementielle, avec la méthode exec() il me semble.

    Et dans ton main t'attend que le signal terminated() du thread soit émis.
    1
    1. DrCrow Messages postés 416 Statut Membre 19
       
      Donc, sa sera de ce cas..
      class Thread : public QThread
      {
          Q_OBJECT
      
          public:
              Thread()
              {
                  i=0;
              }
              void run()
              {
                  qDebug()<<"Th:1>>> "<<i;
                  i++;
                  exec();
              }
          private:
              int i;
      };
      


      et pour la dernière ??
      >> Et dans ton main t'attend que le signal terminated() du thread soit émis. <<
      0
    2. francis
       
      mmmh tu n'a pas de classe principale ?
      0
    3. DrCrow Messages postés 416 Statut Membre 19
       
      nn, j'ai pas crée, c'était un simple code de test ......
      j'ai tout mit dans le main
      0
  2. loupius Messages postés 789 Statut Membre 148
     
    Oui il est nécessaire d'avoir une boucle principale.
    D'autre part, il faut comprendre que Qt a besoin d'une initialisation (et d'une finalisation) de son environnement avant d'utiliser une quelconque classe.
    Généralement on déclare une unique instance de 'QApplication' mais, si tu ne fais pas appel à 'GUI', tu peux utiliser une instance de 'QCoreApplication'.
    Voir la doc de Qt pour de plus amples précisions.
    Bonne continuation.
    1
    1. DrCrow Messages postés 416 Statut Membre 19
       
      Merci de ta réponse, je vais m'approfondir plus a propos de ce que vous m'avais dit, et si je trouve des soucis, je viens re-poster sinon, je mettrais en RESOLU ....^^
      Bonne journée a vous tous
      0
  3. DrCrow Messages postés 416 Statut Membre 19
     
    UP!!
    0
  4. DrCrow Messages postés 416 Statut Membre 19
     
    Svp, besoin d'aide ....merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dd
     
    As-tu déjà lancer la boucle even de Qt dans ton main?
    0