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 GUI


Sujet :

Multithreading

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Par défaut thread et GUI
    Je prends QT Designer pour créer un listWidget sur un Dialog.
    Je fais aussi une classe Thread.
    Je veux que le thread va afficher une chaine comme "Hello" sur listWidget, j' appel la fonction listWidget->addItem("Hello") dans Thread::run() mais ce n'est pas possible, cette fonction est appelé seulement dans la classe DialogImpl.
    Qu'est-ce que je dois faire pour résoudre ca?
    Merci par avance pour votre aide!!!
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip d.zip (11,1 Ko, 54 affichages)

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Si j'ai bien compris ton porblème tu peux utiliser les signaux slot pour le resoudre. En gros du declare un signal dans ton thread quand tu en a besoins tu fais un emit de ton signal et dans ta Dialog tu crée un slot qui receptionne ce signal et met a jour ta listWidget. Bien sur avant tout cela tu fait un connect entre ton thread et ta Dialog. J'espere que je suis assez clair. N'hesite pas si tu veux des precision ou peux etre que je n'ai pas bien compris ton problème.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Par défaut
    Merci de votre aide! J' ai fais comme-ci:
    - Ajouter un signal test() dans la classe Thread
    - Ajouter un slot my_callback() dans la classe DialogImpl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void DialogImpl::my_callback() {
    	listWidget->addItem("Hello");
    }
    - Appeler connect(thread, SIGNAL(test()), this, SLOT(my_callback())) dans le constructeur du classe DialogImpl
    - Appeler test() dans Thread::run():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void Thread::run()
    {
    	while (!stopped) {
    		emit test();
    		std::cerr << qPrintable(messageStr);
    	}
    	stopped = false;
    }
    Mais il a fait un erreur quelconque en démarrant le thread. Si j' efface emit test() dans Thread::run(), le thread fonctionnera normalement.
    Pourquoi il y a cet erreur du thread? Merci par avance!
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip d.zip (11,5 Ko, 55 affichages)

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Peux tu preciser le types d'erreurs que tu as sinon je pense qu'un tempo dans ton thread serait une bonne chose aussi ; sinon ca va bouclé en permanance et tu vas envoyer enormement de fois ton signal à ta GUI et je ne pense pas que cela te soit necessaire, enfin je peux me tromper...
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Par défaut
    Merci bien, j'ai résoulu mon problème et plus compris la fonction du thread!!!

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Mais au final c'etait quoi réellement le problème ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

Discussions similaires

  1. Thread, freeze GUI et priorités
    Par Niak74 dans le forum Qt
    Réponses: 9
    Dernier message: 24/09/2009, 11h34
  2. thread pour Gui et pour tache temps reel
    Par Pierag dans le forum POSIX
    Réponses: 1
    Dernier message: 26/07/2009, 15h48
  3. [Thread] Comment recharger le GUI via une tâche de fond?
    Par nicdo77 dans le forum EDT/SwingWorker
    Réponses: 1
    Dernier message: 04/01/2008, 17h09
  4. Problème de GUI et plus exactement de threads, je crois
    Par TabrisLeFol dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/05/2006, 17h13
  5. sudoku console + gui + thread
    Par marc_dd dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 28/04/2006, 09h25

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