Bonjour,

j'ai lu pas mal de discussion autour de QTimer et QThread mais je n'arrive pas a faire fonctionner mon code correctement


Je cherche a creer un QThread qui vas injecter des donnees a intervalle regulier dans mon thread principal.

mon probleme:
le thread se cree bien, mais le timer a l'interieur ne se met a tourner que quand mon thread principal peut executer des ProcessEvents.

J'ai besoin que ce soit independant!

Comment faire merci de votre aide







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
 
 
// thread principal
tThread   *tThr;
 
tThr = new tThread(NULL);
connect(tThr, SIGNAL(setTimer_signal()), this, SLOT(getTimer_slot()) );
tThr->start();
 
 
// la mon appli lance des calculs, il n'y a pas de ProcessEvents a l'interieur!
calcul();
 
 
 
 
 
 
 
// le timer thread
tThread::tThread (QObject *parent)
{
}
 
tThread::~tThread ()
{
    delete timer;
}
 
 
void tThread::setTimer_slot ()
{
    // do something
 
    emit setTimer_signal();
}
 
void tThread::startTimer_slot ()
{
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(setTimer_slot()));
    timer->start(1000);
}
 
 
void tThread::run ()
{
 
    startTimer_slot ();
    exec();
 
}
 
 
 
void tThread::stop ()
{
    quit();
    wait();
}