Bonjour,
Voici mon le programme que je souhaite réaliser :
Des messages UDP arrivent dans une socket, ils sont déformatés puis la data est envoyée dans un graph pour y être affichée (j'utilise QCustomplot).
J'ai donc défini 1 bouton et 1 graph dans la mainwindow. a l'initialisation un objet QThread est créé, et la fonction run connecte un signal (venant du bouton) à un slot (fonction d'un objet socket udp).
Au moment de l'appui sur le bouton le slot du socket est appelé par dans le thread et la fonction se déroule dans une boucle qui receptionne le message, le déformate et envoie la data par un signal et ainsi de suite dans une loop.
Le probleme est le suivant : comment arreter cette loop en appuyant une nouvelle fois sur le bouton ? Sachant que dans mon fonctionnement le thread qui réalise la réception est bloqué dans la boucle et ne peut donc pas prendre en compte un nouveau signal... La seule solution que je vois consiste à envoyer un message UDP depuis le thread principal qui contiendra un "Stop" et qui permettra de quitter la loop...
Et une seconde question, je n'ai pas trouvé la réponse sur internet, est il possible d'avoir sur une fenetre Qt une interface (boutons) tournant avec le thread principal et un graph sur un second thread ? Cela pour eviter de freezer l'interface dans le cas d'un gros débit de data à afficher dans le graph
Mon code actuel est tres fortement inspiré de ce tuto : Qthread - developpez.net
La différence étant au niveau de la fonction : void doSort(const QVector<int> &v)
Qui dans mon cas ne retourne pas apres avoir envoyé le signal mais boucle tant que l'on ne souhaite pas arreter l'acquisition
Merci à vous
Partager