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 :

Lecture en temps réel et affichage


Sujet :

Qt

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 75
    Points : 76
    Points
    76
    Par défaut Lecture en temps réel et affichage
    Salut tout le monde!
    Je rencontre un problème avec Qt lié au temps réel!D'un coté j'ai
    un fichier .txt qui s'écrit en continue par le biais d'un .exe appelé dans
    Qt (donc code non disponible) puis de l'autre j'ai une fenêtre remplie de QgroupBox/QPushButton/QLayout...fin la totale.

    Dans cette fenêtre, j'ai des QLabel dont le contenu devrait
    changer toutes les 5 secondes (le .exe écrit non stop toutes les millisecondes on va dire, et toutes les 5 secondes on récupère la valeur lue que l'on met dans un QLabel de la fenetre. Seulement mon souci c'est que la fenêtre "dort" jusqu'à la dernière valeur lue et n'affiche que celle là! En fait lire en pseudo temps réel ca va mais afficher toutes les 5 secondes un nouveau texte via setText dans un QLabel ca n'affiche pas l'intérieur de la fenêtre, c'est tout blanc comme quand ca dort (thread->msleep) ou quand ca plante....jusqu'à la dernière valeur lue...
    So comment faire pour afficher un nouveau texte toutes les 5 secondes???????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Fenêtre pricipale qui gère l'ouverture des sous-fenêtres
     
    void IHM_main_window::lecture_sortie(){
     
    	if(Sortiew_isclosed == 1){
    		RESW = new IHM_sortie_window;
    		RESW->show();
    		RESW->utilisation_lecteur();
    	}
     
    }
    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
     
    // Classe de la sous-fenêtre
    IHM_sortie_window::IHM_sortie_window(){
     
    	- création de la fenêtre
    	- lecteur = new Reader;
     
    }
    void IHM_sortie_window::utilisation_lecteur(){
     
    	while(stop == false){
    		- lecteur->lecture_tps_reel();
    		- remplissage QLabel via setText();
    	}
    }

    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
    29
    30
    31
    32
     
    //(Reader est un QThread car j'utilisais msleep avant pour attendre 5 secondes mais pb aussi...
    dc plus vraiment obligatoire) qui sert de lecteur en tps réel
     
     
    Reader::Reader(){
          - lecture des en-têtes fichiers
          - initialisations membres publics
    }
     
    void Reader::lecture_tps_reel(){
     
         si(premiere_lecture){
    	     msleep(10)
    	     -recuperation_valeurs_lues
         }
         sinon{
    	     QTimer timer = new QTimer(this);
    	     connect(timer, SIGNAL(timeout()), this, SLOT(MAJ_lecture());
    	     timer->start(5000);
         }
    }
     
    void Reader::MAJ_lecture(){
     
    	- on se place à la fin du fichier
     
    	- on remonte jusqu'au début de la dernière ligne pleine précédente
     
    	- on prend les valeurs qu'on stocke pour les remplir dans les QLabel correspondants
     
    }

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Bon je pense que c'est une faute de copie mais y'a un souci avec la déclaration de QTimer.
    Concrètement c'est ton timer qui s'occupe de faire la boucle de déclenchement toutes les 5s, je ne comprends pas à quoi sert ton while(), qui lui ressemble à un gros freeze 100%CPU.
    Donc il vaudrait mieux que ton QTimer soit une variable membre, et que Reader ait une méthode "stop()" que tu appelleras depuis ta sortie_window, pour stopper le timer.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Nickel ca a résolu mon problème. bravo et encore merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/09/2011, 12h24
  2. lecture en temp réel sur spectre
    Par diaso dans le forum C++
    Réponses: 0
    Dernier message: 02/09/2009, 17h54
  3. Affichage en temps réel...
    Par beral dans le forum C++Builder
    Réponses: 6
    Dernier message: 09/02/2006, 12h05
  4. [WD9] Affichage en temps réel
    Par oz80 dans le forum WinDev
    Réponses: 4
    Dernier message: 11/01/2006, 14h06
  5. Réponses: 19
    Dernier message: 20/12/2005, 10h03

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