Bonjour,
J'ai connecté tous les threads créés avec la classe appelante. J'ai un emit et un slot personnalisés.
Le code compile et passe bien sur l'emit mais la fonction slot ne semble jamais être appelée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Compil : public QObject { Q_OBJECT public: Compil(QStringList* ); private slots: void showProgress(); };
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 Compil::Compil(QStringList* ListeJob) { qDebug() << "Classe Compil"; QStringList * ListeStdOut = new QStringList (); QStringList * ListeStdErr = new QStringList (); QList<Thread*> threadList; int noeuds(4); for (int i(0) ; i < noeuds ; ++i) { Thread * pThread = new Thread(ListeJob, ListeStdOut, ListeStdOut, i); QObject::connect(pThread, SIGNAL(compilationFinished()),this, SLOT(showProgress())); pThread->start(); threadList << pThread; } while (threadList.count () > 0) { threadList[0]->wait (); delete threadList[0]; threadList.removeFirst (); } delete ListeJob; delete ListeStdOut; delete ListeStdErr; } void Compil::showProgress() { qDebug() << "SIGNAL" ; }
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 Thread::Thread(QStringList * liste_job, QStringList * liste_StdOut, QStringList * liste_StdErr, int i) { ListeJob = liste_job; ListeStdOut = liste_StdOut; ListeStdErr = liste_StdErr; num_thread = i; } void Thread::run() { qDebug() << "Thread " << num_thread; forever { (...) qDebug() << "emit"; emit compilationFinished(); } else { mutexListeJob.unlock(); break; } } }
Partager