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)
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)));
...
fonction affichage :
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.h
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);
};
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
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....