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:
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:
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:
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
} |