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 :

Affichage d'infos dans une boucle


Sujet :

Multithreading

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut Affichage d'infos dans une boucle
    Bonjour,
    J'ai une petite appli (en fait un serveur d'impression) écrite en python 2.6 avec Qt4.

    Le principe est le suivant :
    Un timer déclenche une méthode qui va lire une base MySql pour trouver des éditions en attente.
    Quand une édition est trouvée, un appel SOAP est déclenché sur un PHP qui génère un PDF et l'envoie à l'imprimante.

    Durant tout ce processus, je mets à jour des infos dans des QLineEdit.

    Le problème est que je ne vois pas s'afficher les infos dans les QLineEdit.
    Avant, la même appli était basé sur WxPython et je faisait un wx.Yield mais je n'ai pas trouvé l'équivalent en Qt.

    Quelqu'un connaît la solution ?

  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
    Salut

    ton timer est dans un thread?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par yan Voir le message
    Salut ton timer est dans un thread?
    Non, j'ai fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	self.TimerFic = QTimer(self)
    	QObject.connect(self.TimerFic, SIGNAL("timeout()"), self.AppelTimer)
    	self.DepartTimer()

  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
    Deux solutions :
    1- tu appel de temps en temps QCoreApplication::processEvent()
    http://qt.developpez.com/doc/latest/...#processevents
    2-Tu fait tes traitement dans un thread et tu emet des signaux pour mettre à jour l'ihm. (Tu peux faire cela avec un QObject que te déplace dans un thread par là suite ou en héritant de QThread)

    Je te conseillerai la deuxième. Mais la première est plus rapide. Attention à ne pas trop appeler processevent.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Génial ! Merci. (petite correction : c'est processEvents )

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Est-ce qu'un QCoreApplication.flush() est équivalent ?

  7. #7
    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
    Petit lien vers la FAQ :
    http://qt.developpez.com/faq/index.p...i#de-geler-ihm

    Si tu veux afficher une progressbar, QProgressDialog peux gérer l'appel à processEvents
    http://qt.developpez.com/doc/latest/...tion-detaillee

  8. #8
    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 edblv Voir le message
    Est-ce qu'un QCoreApplication.flush() est équivalent ?
    Je ne pense pas. Si je comprend la doc, ca flush l'eventloop de l'os et non celle de Qt. Mais ca vaut le coup de tester.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par yan Voir le message
    Petit lien vers la FAQ :
    http://qt.developpez.com/faq/index.p...i#de-geler-ihm

    Si tu veux afficher une progressbar, QProgressDialog peux gérer l'appel à processEvents
    http://qt.developpez.com/doc/latest/...tion-detaillee
    Heuuuu oui mais ça parle pas de flush() !
    Oups, j'avais pas vu la réponse juste avant !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par yan Voir le message
    Je ne pense pas. Si je comprend la doc, ca flush l'eventloop de l'os et non celle de Qt. Mais ca vaut le coup de tester.
    Alors, j'ai essayé, et ça ne fait rien !
    Donc processEvents me va très bien.

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

Discussions similaires

  1. Affichage de message dans une boucle
    Par Sega24 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/05/2014, 09h15
  2. [Google Maps] Affichage dans une boucle
    Par astroma dans le forum APIs Google
    Réponses: 1
    Dernier message: 04/09/2012, 23h25
  3. Affichage d'images dans une boucle
    Par joforum59 dans le forum Android
    Réponses: 7
    Dernier message: 24/08/2012, 12h57
  4. Affichage d'images dans une boucle
    Par joforum59 dans le forum Android
    Réponses: 1
    Dernier message: 24/08/2012, 00h34
  5. Affichage d'info dans une image
    Par mehdi_ouni dans le forum JDBC
    Réponses: 2
    Dernier message: 27/03/2007, 17h31

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