Bonjour à tous,
voici mon problème, j'ai un main qui lance un thread, celui-ci toutes les 5 secondes va lire une valeur dans une base de données et emet signal au main pour afficher cette valeur, mon problème est le suivant :
Le thread se lance bien, il boucle bien et mais lors du emit, le signal n'est pas reçu par ma form principale et celle-ci ne rentre donc pas dans le slot d'affichage...
Le code :1
main : (le thread se lance bien)
fonction affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... th.start(); QObject::connect(&th,SIGNAL(threadStock::threadNbrItemManquant(int)),this,SLOT(OcchioStock::UpdateStatusBar(int))); ...
threadStock.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void OcchioStock::UpdateStatusBar(int p_NbrItem) { //Le code reste à faire }
threadStock.cpp
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 #include <QThread> #include "stockmanagement.h" class threadStock : public QThread { Q_OBJECT public: threadStock(); StockManagement * sm; void stop(); protected: void run(); private: volatile bool stopped; signals : void threadNbrItemManquant(int p_NbrItem); };
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 #include "thread.h" threadStock::threadStock() { sm = new StockManagement(); stopped = false; } void threadStock::run() { int nbrManquant = 0; while (!stopped) { QThread::msleep(5000); nbrManquant = sm->VerifManqueStock(); emit threadNbrItemManquant(nbrManquant); } stopped = false; } void threadStock::stop() { stopped = true; }
Merci pour votre aide....
Partager