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