RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Retour de slot

Forum : LIBRAIRIE C++ - GTK
Sous Catégorie : GTK
Type du sujet : Sujet Normale
FAQ : FAQ LIBRAIRIE C++ - GTK

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM LIBRAIRIE C++ - GTK

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#22276
Posté le 25/07/04 à 23:48
Salut, je suis toujours sur le projet Qt de l'awalé, revoici une image pour voir un peu mieux
Image

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]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

kadirou
Membre actif
Avatar de kadirou
Inscrit : 13/04/2004
Messages : 147
Message
#22495
Posté le 26/07/04 à 16:18
Bonjour

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.

Par exemple si tu avais


while (choix==0); <code de gestion>


alors


void slot_JOUER() { <code de gestion> }

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#22545
Posté le 26/07/04 à 19:07
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]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

kadirou
Membre actif
Avatar de kadirou
Inscrit : 13/04/2004
Messages : 147
Message
#22699
Posté le 27/07/04 à 11:36
Re

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

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

eVias
Membre du club
Avatar de eVias
Inscrit : 25/01/2004
Messages : 1008
Message
#22722
Posté le 27/07/04 à 12:24
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: Smiley

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 Smiley
__________________________
Grégory S.

eVias Web & Software Solutions.

Développement Web et logiciel en tout genre et Open Source.

FOSDEM 2008. Venez -y nombreux !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#22942
Posté le 27/07/04 à 18:00
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]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

kadirou
Membre actif
Avatar de kadirou
Inscrit : 13/04/2004
Messages : 147
Message
#23172
Posté le 28/07/04 à 14:07
Salut pac

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.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#23308
Posté le 28/07/04 à 18:16
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]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

eVias
Membre du club
Avatar de eVias
Inscrit : 25/01/2004
Messages : 1008
Message
#23368
Posté le 28/07/04 à 21:05
Mci :) :P:

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 Smiley comme on l'a souvent dit on est pas parfait! Smiley 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 Smiley
__________________________
Grégory S.

eVias Web & Software Solutions.

Développement Web et logiciel en tout genre et Open Source.

FOSDEM 2008. Venez -y nombreux !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM LIBRAIRIE C++ - GTK



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.