Salut, je suis toujours sur le projet Qt de l'awalé, revoici une image pour voir un peu mieux
Mon soucis cette fois ci est que je cherche à récupérer dans le code principal le no deu boutton appuyé.
Ainsi, j'ai créé une variable int choix_case, qui prend -1 par défaut, puis j'ai relié chaque bouton sans nom à un slot qui modifie la variable choix_case suivant le bouton appuyé.
Puis dans mon code principal, je souhaite faire une boucle qui attende que la var choix_case soit modifiée pour passer à la suite mais il boucle sans fin.
J'ai essayé un
while (choix_case == -1);
Mais c'est pas bon, comment faire ?
Merci.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
Je pense que ta boucle empeche ton interface graphique de gerer les evenements. D'ailleurs, je crois qu'elle te pose des probleme de rafraichissement et d'affichage (si tu masque puis reaffiche la fenetre, deplace la fenetre,). Ton code principale doit toujours se termine par une instruction de la forme
myapp.exec()
ou myapp est un objet QApplication
Une solution consisterai a inserer le code de gestion des choix dans le slot gerant le bouton JOUER par exemple.
Salut Kadirou, ravi de rencontrer un nouveau qui a l'air de s'y connaitre et qui aide volontier.
En fait le bouton Jouer, sert à faire une intialisation puis de lancer un jeu en fonction de la difficulté et du mode choisi.
Pour dans la fonction lancer_jeu_1joueur (par ex), il y a tout le code du déroulement du jeu.
Et je voudrais bien à un moment donné, faire une attente qu'un petit bouton sans nom soit pressé, puis récoupérer le no du bouton pressé, par exemple chaque bouton est accroché à un slot qui va modifier une variable interne à la fenêtre.
Mais je connais pas la commande qui fasse attendre.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
N'ayant pas vu le code, je ne suis pas sur que ma reponse va resoudre ton probleme.
Pour l'attente, on peut la faire mais a l'interieur des Thread (classe QThread dans Qt et les fonctions sleeps, msleep ...).
D'un autre cote, une attente de type
while (x==-1)
empecherai l'interface graphique de gerer les evenements.
Je te propose d'essayer ce bout de code (il faut inclure qapplication.h dans le fichier source)
while (choix==-1) {
qApp->lock(); // si tu n'utilise pas de thread, je crois que ce n'est pas necessaire
qApp->processEvents ();
qApp->unlock(); // meme remarque que pour le lock();
} // end while
// Suite du code du jeu
Re tous,
alors voilà j'ai enfin terminé de bosser sur mon PC donc je serais un peu plus présent, merci à toi kadirou pour avoir aider pac en QT je vois que je ne suis plus tout seul en tant que QTien :P:
La fonction lock( ) va bloquer (dans le sens de lock en anglais) le Mutex de la librairie Qt. Si un autre thread à déjà bloqué (de même) le Mutex, alors le thread tentant de le faire une deuxième fois bloquera jusqu'à ce que le premier thread débloque (sens de unlock) le Mutex.
Pour plus d'information concernant les threads et les mutex en Qt, voir la doc et lire la page: threads.html
Voilà pour les quelques explications concernant cette fonction :)
ciao
__________________________
Grégory S.
eVias Web & Software Solutions.
Développement Web et logiciel en tout genre et Open Source.
Salut, merci pour l'aide, va falloir que je me renseigne mieux la dessus et que j'apprenne les threads.
Je vais essayer et je vous dit si ca marche.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
Juste une remarque concernant la solution suivante :
while (choix==-1) {
qApp->processEvents();
}
// Suite du Traitement
le pointeur qApp est une sorte de variable globale qui représente l'application. Pas la peine de la déclarer, elle est deja declare dans qapplication.h.
Autre remarque concernant les threads en Qt (bien sur tu peux utiliser d'autres plus standards comme les pthread), pour ton jeu , je ne crois pas que ca soit necessaire de les utiliser. Neanmoins si tu veux les utiliser, tu dois avoir le support Qt multi-thread (libqt-mt.so) et utiliser l'option de compilation -DQT_THREAD_SUPPORT.
Salut Kadirou, merci pour tout ton aide mais je vais faire sans thread encore, d'abord bien piger Qt simple puis passer aux threads.
J'ai oublié hier de revenir pour dire que ca marchait donc c'est cool merci.
DmXx : délire ton avatar.
Je reviendrai pour d'autres questions surement.
PS : lol un visiteur qui aide un modérateur
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
j'espère que tu apprendras vite et, même si moi je suis aussi modérateur, je ne vois pas pourquoi on devrait se gêner de poser des questions comme on l'a souvent dit on est pas parfait! et puis on voit bien que certains visiteurs sont à la hauteur :)
bonne chance encore avec Qt et n'oublie pas qu'on est là si ia des pb :)
ciao
__________________________
Grégory S.
eVias Web & Software Solutions.
Développement Web et logiciel en tout genre et Open Source.