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

Fermé
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - Modifié par DrCrow le 17/06/2010 à 11:39
 dd - 18 avril 2011 à 11:41
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....
A voir également:

5 réponses

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 lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
17 juin 2010 à 12:14
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
mmmh tu n'a pas de classe principale ?
0
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
17 juin 2010 à 13:17
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
22 juin 2010 à 11:24
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 lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
22 juin 2010 à 18:08
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 lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
18 juin 2010 à 17:54
UP!!
0
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
21 juin 2010 à 13:01
Svp, besoin d'aide ....merci
0

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

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