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

Qt Discussion :

[Qt4 GUI]Problème Affichage bloquant


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut [Qt4 GUI]Problème Affichage bloquant
    Bonjour à tous,

    Je tente de réaliser un programme qui récupère des données de façon régulière, et qui les affiche "en temps réel".
    La partie récupération des données fonctionne, mais lorsque j'essaie d'afficher les données, l'interface se "bloque", et n'affiche toutes les données qu'en un seul bloc, une fois le programme terminé.

    J'ai donc essayer de simplifier mon code pour identifier le problème, et je n'ai toujours pas réussi à le résoudre.

    J'ai fait un programme simple, compilable (mode console) qui met en évidence mon problème. Une simple boucle for avec dedans une fonction qui affiche les données, à la fois sur la console et dans mon interface. On voit que l'affichage se fait correctement sur la console, mais pas sur l'interface Qt.

    Je vous laisse essayer. Merci de votre aide.

    G.

    PS : Win xp sp2, Qt 4.3.3

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Salut.
    Dans le code que tu donne c'est normale.
    L'eventloop n'est lancé qu'aprés.

    As tu essayer de rajouter
    pendant la récupération de tes données?

  3. #3
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Pour de l'extraction de données permanente, il faut utiliser un thread. Le processEvent est une mauvaise solution dans ces cas (perte de réactivité à la fois dans la GUI et dans la récupération).

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Salut,

    Pour de l'extraction de données permanente, il faut utiliser un thread. Le processEvent est une mauvaise solution dans ces cas (perte de réactivité à la fois dans la GUI et dans la récupération).
    +1
    (faut que je reflechisse avant de repondre,parfois... )

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Ok, le processEvents() (que je ne connaissais pas) me permet de "rafraichir" l'affichage. Cependant, mes données, qui apparaissaient auparavant correctes, sont toutes nulles à présent.

    Je vous tiens au courant.Merci Mongaulois pour ton aide

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Ok, le processEvents() (que je ne connaissais pas) me permet de "rafraichir" l'affichage. Cependant, mes données, qui apparaissaient auparavant correctes, sont toutes nulles à présent.

    Je vous tiens au courant.Merci Mongaulois pour ton aide
    Ce n'est qu'une astuce, quand on fait des traitements un peu long dans la thread GUI.
    Tiens compte de la remarque de IrmatDen

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Ok Ok. Je vais me pencher sur les threads Qt. Je suppose que pour faire communiquer les threads entre eux, ils faut utiliser les signaux/slots. J'ai vu qu'il y avait un tuto dessus sur le site.

    Vous auriez d'autres adresses concernant ce genre de choses (autre que la doc Qt et ce tuto ?)

    En tout cas merci à vous deux. Je signale ce post comme résolu. Je le relancerai peut etre plus tard, si je bloque vraiment ( j'ai toujours eu un peu de mal avec les threads ).

    Bonne continuation, et merci encore.

    G.

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut Les Threads ...
    Salut,

    Bon j'ai essayé de faire un peu le tour des threads, mais je comprends pas. J'ai fait le peu de tuto que j'ai trouvé, j'ai lu les docs sur les threads, les eventLoops, etc, mais rien n'y fait. Même en essayant de faire un truc tout simple, ça ne marche pas et je comprends toujours pas pourquoi:

    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
    25
    26
    27
    28
     
    #include <QtCore>
    #include <QtGui>
    #include <iostream>
     
    #include "threadSimple.h"
     
    using namespace std;
     
    threadSimple::threadSimple(QObject *parent) : QThread (parent) 
    {}
     
     
    void threadSimple::run()
    {
    	for(int i=0;i<10;i++)
    		cout<<"developpez.com\n";
     
    	exec();
    }
     
    int main(int argc, char *argv[])
    {
    	QApplication app(argc, argv);
    	threadSimple ts;
    	ts.start();
    	return app.exec();
    }
    Je comprends pas, dans plein d'exemples, ils utilisent juste le exec() et tout marche bien. J'ai essayé avec des exits, quit, même terminate, rien à faire, le programme reste bloqué après avoir passé la boucle.

    Si vous avez des infos, une page ou y a des choses simples et claires, j'achète !!

    Merci à vous,

    G.

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

Discussions similaires

  1. [Qt4][QGIS]Problème d'affichage d'un raster
    Par abir_rzg dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 26/06/2009, 13h35
  2. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  3. Problème affichage primitive
    Par goutbouyo dans le forum DirectX
    Réponses: 4
    Dernier message: 29/12/2004, 18h25
  4. [Plugin][VE] Problème affichage
    Par sebb84 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 14h50
  5. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

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