IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Problème (surement) de connexion


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Problème (surement) de connexion
    Bonjour à tous,
    Voilà je suis encore un grand débutant de Qt et il y a peu je me suis lancé dans un jeu de pendu. Voilà comment le jeu s'organise: Un première fenêtre "fen_accueil" s'ouvre et propose pour l'instant deux choix à l'utilisateur: quitter(ferme le jeu) ou jouer(ouvre une fenêtre de jeu que j'ai appelé fen_jeu). Jusque là ok!
    un aperçu:


    Mais voilà, j'ai fais un slot de fen_jeu qui s'appelle "void analyse()" sensé intervenir quand on clic sur un bouton (ce slot retire des vies, annonce la défaite,...) Mais il y a un problème de conexion et rien ne se passe quand je clic sur les boutons.
    le header de fen_jeu:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #ifndef JEU
    #define JEU
     
    #include <QString>
    #include <QApplication>
    #include<QLabel>
    #include<QDialog>
    #include<QPushButton>
    #include<QPixmap>
    #include<QPalette>
    #include<QColor>
    #include<QGridLayout>
     
     
    class fen_jeu :public QDialog //la fenêtre qui s'ouvre quand je clic sur le bouton "jouer" de "fen_accueil"
    {
    Q_OBJECT
     public:
    	fen_jeu();
     private:
    	QPushButton* A;  //le clavier virtuel du pendu...
    	QPushButton* B; //j'ai déjà essaier de faire un tableau de
    	QPushButton* C; //26 cases mais ça va pas pour la suite...
    	QPushButton* D;
    	QPushButton* E;
    	QPushButton* F;
    	QPushButton* G;
    	QPushButton* H;
    	QPushButton* I;
    	QPushButton* J;
    	QPushButton* K;
    	QPushButton* L;
    	QPushButton* M;
    	QPushButton* N;
    	QPushButton* O;
    	QPushButton* P;
    	QPushButton* Q;
    	QPushButton* R;
    	QPushButton* S;
    	QPushButton* T;
    	QPushButton* U;
    	QPushButton* V;
    	QPushButton* W;
    	QPushButton* X;
    	QPushButton* Y;
    	QPushButton* Z;
     
    	QLabel* image; //l'image du pendu
    	QLabel* mot;   //le mot avec les lettres cachés, ex: M**R*N
    	QLabel* texte; //un petit texte sans incidence...
     
     
    	QString nbre_vies; //le nombre de vies du joueur (QString pour l'afficher dans "Label texte")
    	QString mot_secret;//le mot secret biensur...
    	QString mot_affiche;//ce qui est affiché dans "Label mot"
    	int vies;           //la version int de nbre_vies
     
    	 bool test_victoire();//test les conditions de victoire
     
    public slots:
    	void analyseA(); //analyse la situation quand on clic sur le bouton A
    };
    #endif
    et le .cpp:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    #include"fen_jeu.h"
     
     
    fen_jeu::fen_jeu() : QWidget() { //constructeur
    	 mot_secret = "MARRON"; //mot secret (fixé au départ)
    	setWindowIcon(QIcon("Corde.gif"));
    	setStyleSheet("background-color: white;");	
    	nbre_vies = "6";
    	vies = nbre_vies.toInt();//convertion de QString en int
    image = new QLabel;
    image->setPixmap(QPixmap("pendu" +nbre_vies+".jpg"));//l'image variera avec nbre_vies
    	 mot_affiche = "";
    for (int i = 0; i<mot_secret.size(); i++){
    	mot_affiche += "*";    //hello
    }
    mot = new QLabel(mot_affiche);//le mot que voit l'utilisateur...
    	QColor couleur;
    	couleur.setRgb(255,0,0);
    	mot->setPalette(QPalette(couleur));
    	mot->setFont(QFont("Purisa", 30));
    texte = new QLabel("il vous reste " + nbre_vies + " vies,\ntrouvez le mot suivant:");
    	texte->setPalette(QPalette(couleur));
    	texte->setFont(QFont("Purisa", 18));
     
    A = new QPushButton("A");//le clavier virtuel...
    	A->setStyleSheet("background-color: red;");
    B = new QPushButton("B");
    	B->setStyleSheet("background-color: red;");
    C = new QPushButton("C");
    	C->setStyleSheet("background-color: red;");
    D = new QPushButton("D");
    	D->setStyleSheet("background-color: red;");
    E = new QPushButton("E");
    	E->setStyleSheet("background-color: red;");
    F = new QPushButton("F");
    	F->setStyleSheet("background-color: red;");
    G = new QPushButton("G");
    	G->setStyleSheet("background-color: red;");
    H = new QPushButton("H");
    	H->setStyleSheet("background-color: red;");
    I = new QPushButton("I");
    	I->setStyleSheet("background-color: red;");
    J = new QPushButton("J");
    	J->setStyleSheet("background-color: red;");
    K = new QPushButton("K");
    	K->setStyleSheet("background-color: red;");
    L = new QPushButton("L");
    	L->setStyleSheet("background-color: red;");
    M = new QPushButton("M");
    	M->setStyleSheet("background-color: red;");
    N = new QPushButton("N");
    	N->setStyleSheet("background-color: red;");
    O = new QPushButton("O");
    	O->setStyleSheet("background-color: red;");
    P = new QPushButton("P");
    	P->setStyleSheet("background-color: red;");
    Q = new QPushButton("Q");
    	Q->setStyleSheet("background-color: red;");
    R = new QPushButton("R");
    	R->setStyleSheet("background-color: red;");
    S = new QPushButton("S");
    	S->setStyleSheet("background-color: red;");
    T = new QPushButton("T");
    	T->setStyleSheet("background-color: red;");
    U = new QPushButton("U");
    	U->setStyleSheet("background-color: red;");
    V = new QPushButton("V");
    	V->setStyleSheet("background-color: red;");
    W = new QPushButton("W");
    	W->setStyleSheet("background-color: red;");
    X = new QPushButton("X");
    	X->setStyleSheet("background-color: red;");
    Y = new QPushButton("Y");
    	Y->setStyleSheet("background-color: red;");
    Z = new QPushButton("Z");
    	Z->setStyleSheet("background-color: red;");
     
    	QGridLayout* layout = new QGridLayout; //positionnement dans la fenêtre...
    	layout->addWidget(texte,0,0,3,8);
    	layout->addWidget(mot,3,0,3,8);
    	layout->addWidget(A,6,0);
    	layout->addWidget(B,6,1);
    	layout->addWidget(C,6,2);
    	layout->addWidget(D,6,3);
    	layout->addWidget(E,6,4);
    	layout->addWidget(F,6,5);
    	layout->addWidget(G,7,0);
    	layout->addWidget(H,7,1);
    	layout->addWidget(I,7,2);
    	layout->addWidget(J,7,3);
    	layout->addWidget(K,7,4);
    	layout->addWidget(L,7,5);
    	layout->addWidget(M,8,0);
    	layout->addWidget(N,8,1);
    	layout->addWidget(O,8,2);
    	layout->addWidget(P,8,3);
    	layout->addWidget(Q,8,4);
    	layout->addWidget(R,8,5);
    	layout->addWidget(S,9,0);
    	layout->addWidget(T,9,1);
    	layout->addWidget(U,9,2);
    	layout->addWidget(V,9,3);
    	layout->addWidget(W,9,4);
    	layout->addWidget(X,9,5);
    	layout->addWidget(Y,10,2);
    	layout->addWidget(Z,10,3);
    	layout->addWidget(image,0,8,16,8);
     
    	setLayout(layout);
    QObject::connect(A, SLOT(clicked()), this,SIGNAL(analyseA()));//et la p*t**n de connexion
    }
     
     bool fen_jeu::test_victoire(){
     bool victoire = false;
    	if(mot_secret.compare(mot_affiche)==0)//si le mot secret = la suite de lettres trouvées par l'utilisateur
    	 victoire = true;//on gagne!
     return victoire; 
    }
     
    void fen_jeu::analyseA(){
    	A->setStyleSheet("background-color: green;");//ça c'est pour tester si le slot marche...
    if (mot_secret.contains("A")){ //si le mot secret contient "A"
     
    for(int i = 0; i<mot_secret.size();i++){              
     if((QString)mot_secret.at(i)=="A")		//remplacer le "*" affiché
    	mot_affiche.replace(i, 1,"A");		//par la lettre du mot secret
    }
    }
     
     else if (vies == 0 || this->test_victoire()){//si le joueur a perdu ou gagné,
    this->close();//fermer la fenêtre(j'améliorerai ça plus tard...)
    }
     
     else{
     
    	vies--;  //sinon, retirer une vie
    }
    }

    merci d'avance pour votre aide (et votre indulgence si jamais l'erreur est idiote)

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 193
    Points
    193
    Par défaut
    Bonjour.

    Pour tester si ton signal est correctement appelé, utilise quelque chose d'autre que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A->setStyleSheet("background-color: green;");
    Essaye ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QMessageBox msgBox;
    msgBox.setText("Création de la partition primaire backup disk 0");
    msgBox.exec();
    Je te dit ca parce qu'il se peut que ta fenêtre ne soit tout simplement pas actualisée. Donc tu passes dans ton slot, mais tu ne le vois pas.

    Dit moi ce que ca te donne.

    PS : Nécessite un #include de QMessageBox

    Cordialement
    PKO

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Salut à toi,

    bien vu l'actualisation, mais je ne savais pas que l'on en avait besoin sous Qt. Enfin quoi qu'il en soit aucun MessageBox n'apparait quand je clic sur le bouton A
    Donc apparement c'est bien une erreur de conexion. Mais que faire? je ne vois vraiment pas d'où le problème peut venir

    Bien à toi

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut,
    essaie d'ajouter une console, histoire de voire si il n'y as pas un problème ed connect.
    Pour cela, ajoute cette ligne dans le .pro
    CONFIG += console

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(A, SLOT(clicked()), this,SIGNAL(analyseA()));
    tu as inversé SIGNAL et SLOT

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(A, SLOT(clicked()), this,SIGNAL(analyseA()));
    clicked est le signal ; analyseA est le slot


    EDIT: arf, grilled à quelques secondes près

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 193
    Points
    193
    Par défaut
    Mouarf, j'vois vraiment rien ... bien observé

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    EDIT: arf, grilled à quelques secondes près

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    HAHAHA mais c'est pas vrai?! bien vu! ça faisait 2 jours que j'étais là dessus
    cependant je ne met pas encore que mon problème est résolu, le code de ma fonction n'est pas bon si je clic sur le A (le QMessageBox apparait) mais mot_affiche ne devient pas "*A****". Ou s'il le devient, il ne l'affiche pas dans le QLabel. Y a-t-il sous Qt un outil dans le genre glutPostRedisplay de openGL? Ou alors l'erreur de la fonction est ailleurs?

    Merci encore pour l'inversion, j'y aurais pas pensé(comment j'ai fais ça moi?)

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par merodrem Voir le message
    si je clic sur le A (le QMessageBox apparait) mais mot_affiche ne devient pas "*A****". Ou s'il le devient, il ne l'affiche pas dans le QLabel. Y a-t-il sous Qt un outil dans le genre glutPostRedisplay de openGL? Ou alors l'erreur de la fonction est ailleurs?
    ???? hein????

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    heu pardon je suis pas clair
    Donc normalement, vu que le mot secret qui est pour l'instant initialisé à "MARRON", quand on clic sur le bouton A, le slot "void analyse()" est censé remplacer les "******" affichés à l'utilisateur en "*A****". Or rien ne s'affiche.


    je remet le slot:
    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
    void fen_jeu::analyseA(){
    if (mot_secret.contains("A")){ //si le mot secret contient "A"
    for(int i = 0; i<mot_secret.size();i++){              
     if((QString)mot_secret.at(i)=="A")		//remplacer le "*" affiché
    	mot_affiche.replace(i, 1,"A");		//par la lettre du mot secret
    }
    }
     
     else if (vies == 0 || this->test_victoire()){//si le joueur a perdu ou gagné,
    this->close();//fermer la fenêtre(j'améliorerai ça plus tard...)
    }
     
     else{
     
    	vies--;  //sinon, retirer une vie
    }
    }

  12. #12
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Faut mettre à jour le contenu de ton QLabel avec la nouvelle valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot->setText(mot_affiche);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Installation et connexion MSDE
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2006, 15h37
  2. [VBA access 2000]problème surement très bête
    Par herendel dans le forum Access
    Réponses: 5
    Dernier message: 27/04/2006, 15h40
  3. Problème avec ma connexion sur hotmail
    Par shukin dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 30/01/2006, 15h09
  4. LDAP : Problème persistant de connexion à un serveur LDAP!!!
    Par onouiri dans le forum Développement
    Réponses: 11
    Dernier message: 15/11/2005, 20h05
  5. problème innatendu de connexion mysql
    Par gilles74 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/11/2005, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo