IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multithreading Discussion :

Thread et emit [QThread]


Sujet :

Multithreading

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Thread et emit
    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....

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(&th,SIGNAL(threadStock::threadNbrItemManquant(int)),this,SLOT(OcchioStock::UpdateStatusBar(int)));
    pourquoi threadStock:: et OcchioStock:: ???

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Ils ne servent à rien, ils peuvent être enlevé... personne n'a d'idée ?

    C'est bon, ca marche en fait, mauvaise manipulation en debuggant ^^

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Geoffroy123 Voir le message
    Ils ne servent à rien, ils peuvent être enlevé...
    Il faut même. Sinon ton connect ne marche pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  3. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  4. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo