Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3038 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [QT]Probleme de thread...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[QT]Probleme de thread...

n°1081902
guepe
J'ai du noir sur la truffe ?
Posté le 13-05-2005 à 10:22:39  profilanswer
 

Premier programme sous qt (et premier en c++...)
mon probleme est assez simpl : une application avec une fenetre et qq champs... une fonction d'enregistrement des parametres rentres dans les champs (grace a un bouton) et un thread cree par le main, pour en meme temps faire quelques trucs invisible a l'utilisateur (lancement d'un script etc.. mais c'est pas encore implementé
 
lorsque je click sur enregistrer, j'aimerai que mon thread se relance... pb, mes fonctions de ma fenetre ne connaissent pas ce thread, nis sa classe parce qu'elle a ete cree dans la main
lorsque je cree le thread par la fonction d'initialisation (qui rempli mes champs grace au precedent enregistrement), j'ai un erreur de compil :  
 

Citation :

moc/moc_interface.cpp:84: undefined reference to `interface::run()'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [wifi] Erreur 1


 
apparemment ma fonction d'initialisation ne peut pas executer une fonction qui n'appartient pas a la classe interface?
 
voici juste la declaration de mon thread :  
 

Citation :

class GestionConnection : public QThread {
 
    public:
 
        virtual void run();
 
    };


 
et le code de ma fonction d'init (enfin une partie)
 

Citation :

void interface::init()
    {
       QFile file( "conf.dat" );
       QString chemin;
       Q_UINT32 temp;
       int tick;
       GestionConnection thread;
       
       ****plein de chose ininteressantes....  
 
       thread.start(QThread::IdlePriority);
    }


 
je vous remercie de m'aider, je pense que mon probleme est que je ne connais pas du tout assez le c++...


---------------
Un blog qu'il est bien
mood
Publicité
Posté le 13-05-2005 à 10:22:39  profilanswer
 

n°1081917
transistor​49
Posté le 13-05-2005 à 10:28:36  profilanswer
 

un run est toulours en protéger.
essaye sa!

Code :
  1. protected :
  2. void run();

n°1082124
guepe
J'ai du noir sur la truffe ?
Posté le 13-05-2005 à 12:53:04  profilanswer
 

j'ai le regret de vous annoncer que... cela ne fonctionne pas, j'ai exactement la meme erreur (je suis bien dans le meme fichier que ma fonction init)
 
un collegue m'a dit que je devrais mettre mon thread dans un autre fichier, en definissant dans les proprietes du fichier ou j'ai mes fonctions init (en fait la source de ma form) Include (in declaration ou in implementation, il savait pas) le nouveau fichier...
je vais essayer ca, mais je ne vois pas en quoi cela changerai le probleme actuel, qui est que ma fonction init (qui fait partie de la classe interface) ne peut acceder a la fonction run de mon thread... pb de classe donc?
question : est-il possible de definir mon thread comme faisant partie de la classe interface? comment fait on?
ou faut il plutot dire qu'elle "herite" de la classe interface?? coment le fait on ??  
ou est-ce que j'ai tout faux???
 
dsl, plein plein de questions...


---------------
Un blog qu'il est bien
n°1082220
guepe
J'ai du noir sur la truffe ?
Posté le 13-05-2005 à 14:05:51  profilanswer
 

une chose que je ne comprends pas : comment ce fait-il que la ligne : GestionConnection thread; fonctionne (il a donc trouve la classe GestionConnection) mais que l'appel de la fonction ne tourne pas????????
 
[edit]l'implementation de mon thread se fait dans le fichier interface.ui.h...
cela viendrait-il de la???
 
heeeeeeeeeeeeeeeeeeeeeeeelp please!


Message édité par guepe le 13-05-2005 à 14:08:28

---------------
Un blog qu'il est bien
n°1082729
jefe
Posté le 13-05-2005 à 20:54:59  profilanswer
 

Te lancer dans le multithread sous Qt comme premiere approche de la prog C++, je ne pense pas que ce soit un choix judicieux.
Un peu plus de modestie et d'humilite pour commencer tu devras avoir.
 
Deja, ca depend de comment tu as compile ton Qt et ca depend de la version de Qt que tu utilises. Qt peut etre compile avec sous sans le support du multithreading ... donc si tu as compile sans, tu peux toujours te battre avec ton thread. Ensuite, selon les versions les thread ne fonctionnent pas tout a fait pareil (enfin, Qt4 change pas mal de choses, ... en mieux).
 
J'ajouterais que Qt propose un systeme de signaux/slots qui utilise deja plusieurs thread pour toi en fait donc lancer des threads sous Qt impose de suivre certaines regles que tu ne recontrera pas avec d'autres librairies, alors si le but de ton prog est de te familiariser avec les thread, ce n'est pas forcement le bon choix car Qt te simplifiera un peu trop la vie pour en retirer quelque chose et en meme temps il y a quelques limitations ...
 
Ensuite, si tu souhaites poursuivre, le plus simple est que tu jetes un coup d'oeil a la doc de QThread et au dossier exemple de Qt qui te fournira tout le matos necessaire pour faire tourner ton programme.
Pour etre encore plus propre, il y a un bouquin dispo en pdf sur le net : "programming with Qt3". Une petite lecture sur le chapitre des thread de cet EXCELLENT livre (une reference sur Qt3) et tu sera un dieu du multithreading sous Qt ... (mince, j'avais dit qu'il fallait rester humble ...)

n°1083066
guepe
J'ai du noir sur la truffe ?
Posté le 14-05-2005 à 11:40:47  profilanswer
 

je te remercie pour cette reponse ;-)
 
bon, et bien pour commencer.. ca marche presque au poil (reste un chtit bug mais rien de grave, ca fonctionne bien)
ensuite, pour l'explication : j'ai tout simplement mis mon thread dans un autre fichier + declaration dans un .h et voilou.. c'etait assez logique en fait
 
c'est loin d'etre finis, je vais de ce pas lire en tt cas an partie ce bouquin, merci pour l'info..
petite quesion : est-il possible d'executer un script bash depuis un prog en c++ (heu ous qt evidemment)? j'ai pas encore regarder, mais je devrais parce que sans ca l'interet de mon prog est... limité  :D  
 
bon a+ et merci pour tout !


---------------
Un blog qu'il est bien
n°1083271
jefe
Posté le 14-05-2005 à 16:11:06  profilanswer
 

QProcess permet de lancer des processus externes. cela repond t il a ta question ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [QT]Probleme de thread...

 

Sujets relatifs
probleme de configuration avec mail()tout peit probleme formulaire
probleme reseau batch[PHP/SQL] Problème d'espace dans script de traduction ...
Problème avec requête sous MySQLpetit probleme java
Problème d'ouverture de fichiers au format .RRD ???problème session_start
IPC : problème d'ériture sur un segment attaché par un autre processproblème applet java.io.IOException: open HTTP connection failed
Plus de sujets relatifs à : [QT]Probleme de thread...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR