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 :

Problème d'accès à une ressource visuelle


Sujet :

Multithreading

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 91
    Points : 47
    Points
    47
    Par défaut Problème d'accès à une ressource visuelle
    Hello
    J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QtWinMain::QtWinMain(QString pFicRsc, QString pNomUtilisateur)
    {
            mCheckVal = new CheckDispo();	(qui est un Qthread)
    	mCheckVal->setParent(this);
    	mCheckVal->SetIdEleve(mIdEleve);
            connect( mCheckVal, SIGNAL(DisplayMessage(QString)), this, SLOT(DisplayMessageCptSlot(QString)), Qt::DirectConnection ) ;
     	connect( mCheckVal, SIGNAL(HideMessage()), this, SLOT(HideMessageCptSlot()), Qt::DirectConnection ) ;
    	mCheckVal->start();
    }
    ça marche bien. Mon thread se créé et declenche bien mon slot DisplayMessageCptSlot

    cette méthode est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void QtWinMain::DisplayMessageCptSlot( QString aMessage )
    {
    	//wChaMsgLabel->moveToThread(mCheckVal);
    	wChaMsgLabel->setText( aMessage ) ;
    	wChaMsgLabel->show() ;
    }
    wChaMsgLabel est un QLabel de mon QtWinMain.

    et la ... j'ai un message étrange :
    ASSERT failure in QCoreApplication:: sendevent "Cannot send events to objects owne by a different thread."
    Et effectivement quand je debug je me rends compte que lors du traitement de DisplayMessageCptSlot je ne suis pas dans mon thread principale.

    Une petite idée de pourquoi j'en suis la ?

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    De mémoire, tout ce qui est affichage dans Qt est fait dans son propre fil d'exécution, tu dois être dans le même pour chipoter à l'affichage. Peut-être peux-tu passer via QMetaObject::invokeMethod pour appeler le slot souhaité (setText et show) ? Je pense que ça ne marche qu'avec des slots, mais ça devrait faire l'affaire ici.

    En pratique, ça devrait être remplacer wChaMsgLabel->setText(aMessage); par un QMetaObject::invokeMethod(wChaMsgLabel, setText, aMessage);, grosso modo (non testé).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Problème d'accès à une base LDAP
    Par Longrais dans le forum Réseau
    Réponses: 7
    Dernier message: 30/01/2006, 11h23
  2. [servlet] Problème d'accès d'une servlet à un serveur web
    Par nounjours dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/11/2005, 11h19
  3. [Debutant] Probleme d'acces a une variable
    Par Bugmaster dans le forum Langage
    Réponses: 16
    Dernier message: 02/09/2004, 15h57
  4. [Debutant] Acces à une ressource d'une archive différente.
    Par Gandor dans le forum Général Java
    Réponses: 2
    Dernier message: 30/07/2004, 19h37
  5. probleme d'acces a une machine sur un réseau
    Par zorian dans le forum Développement
    Réponses: 3
    Dernier message: 09/06/2004, 13h04

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