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

DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   -  
 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

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
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   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
francis
 
mmmh tu n'a pas de classe principale ?
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
nn, j'ai pas crée, c'était un simple code de test ......
j'ai tout mit dans le main
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   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
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   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
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
UP!!
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
Svp, besoin d'aide ....merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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