[c++ TD3]

Voir le sujet précédent Voir le sujet suivant Aller en bas

[c++ TD3]

Message  bbthug le Dim 15 Mar 2009, 10:08

Bonjour a tous j'ai un problème avec la classe Observateur proposition dans la méthode rafraichir() . J'ai d'abord crée des Qlabel pour ensuite faire des label->setTexte(texte proposé) mais sa ne marche pas.
Donc j'aimerai bien savoir comment faire pour implémenté cette méthode.
Merci Very Happy

bbthug

Nombre de messages : 2
Age : 28
Prénom : Agnès
Statut : 2eme Reseau
Localisation : bruxelles
Date d'inscription : 02/10/2007

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  smb le Dim 15 Mar 2009, 13:22

bbthug a écrit:Bonjour a tous j'ai un problème avec la classe Observateur proposition dans la méthode rafraichir() . J'ai d'abord crée des Qlabel pour ensuite faire des label->setTexte(texte proposé) mais sa ne marche pas.
Donc j'aimerai bien savoir comment faire pour implémenté cette méthode.
Merci Very Happy
Comment peut-on savoir, sans ton code, pourquoi ça ne marche pas?
Par exemple, pour afficher le mot en cours:
As-tu bien un attribut QLabel * mot ; // par exemple
Dans le constructeur de ObservateurProposition as-tu bien attaché cet observateur au sujet, et as-tu bien instancié ce label:
mot = new QLabel("");
Dans rafraichir, vas-tu bien chercher ce qu'il faut?
mot->setText( pendu->motEnCours().c_str());

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  Anthoblack le Dim 15 Mar 2009, 15:15

A ce propos, je n'ai pas encore fait bcp de recherches (j'avoue) mais comment placer les labels où l'on veut (pas l'un sur l'autre...) ?

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  smb le Dim 15 Mar 2009, 16:04

Anthoblack a écrit:A ce propos, je n'ai pas encore fait bcp de recherches (j'avoue) mais comment placer les labels où l'on veut (pas l'un sur l'autre...) ?
Tu n'as effectivemment pas beaucoup travaillé au labo pour poser une question pareille!

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  Anthoblack le Dim 15 Mar 2009, 17:01

smb a écrit:
Anthoblack a écrit:A ce propos, je n'ai pas encore fait bcp de recherches (j'avoue) mais comment placer les labels où l'on veut (pas l'un sur l'autre...) ?
Tu n'as effectivemment pas beaucoup travaillé au labo pour poser une question pareille!
Layout comme je pensais. J'ai regardé la doc suivant vos conseils. Merci pour vos encouragements Wink

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  nvs le Dim 15 Mar 2009, 17:33

Anthoblack a écrit:A ce propos, je n'ai pas encore fait bcp de recherches (j'avoue) mais comment placer les labels où l'on veut (pas l'un sur l'autre...) ?
dommage que je n'ai pas de droits d'administrateur sur cette partie du forum, car cette question n'a rien à faire dans ce sujet. je l'aurais déplacé vers un sujet nommé : [C++] TD1 Evil or Very Mad






_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  bbthug le Dim 15 Mar 2009, 19:56

J'ai déclaré tous les labels dans le .h , je les est instancié dans le constructeur et je les ai regroupé dans une QVBoxLayout .
Voici mon code
Merci

Spoiler:
void ObservateurProposition::rafraichir(SujetDObservation * sdo){

QString test = QString::fromStdString("Proposition en cours : ");
label1->setText(test);
QString test1= QString::fromStdString(pendu->motEnCours());
label2->setText(test1);
QString test2 = QString::fromStdString("Essais restants : ");
label3->setText(test2);
int test3= pendu->vie();
label4->setNum(test3);
if (pendu->gagne()){
QString test4 = QString::fromStdString("Fini : vous avez gagné ! ");
label5->setText(test4);
}else{
QString test5 = QString::fromStdString("Fini:vous avez perdu ! ");
label5->setText(test5);
QString test6 = QString::fromStdString("Le mot à trouver était: ");
label6->setText(test6);
QString test7= QString::fromStdString(pendu->solution());
label7->setText(test7);
}
}

bbthug

Nombre de messages : 2
Age : 28
Prénom : Agnès
Statut : 2eme Reseau
Localisation : bruxelles
Date d'inscription : 02/10/2007

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  nvs le Lun 16 Mar 2009, 00:31

bbthug a écrit:J'ai d'abord crée des Qlabel pour ensuite faire des label->setTexte(texte proposé) mais sa ne marche pas.
que veux-tu dire par ça ne marche pas ? ça plante, les étiquettes ne s'affichent pas, leur texte n'est pas rafraîchi, etc. ?








_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  nvs le Lun 16 Mar 2009, 00:53

bbthug a écrit:J'ai déclaré tous les labels dans le .h , je les est instancié dans le constructeur et je les ai regroupé dans une QVBoxLayout .
Voici mon code
Merci

Code:
 void ObservateurProposition::rafraichir(SujetDObservation * sdo){
   
   QString test = QString::fromStdString("Proposition en cours : ");
   label1->setText(test);
    QString test1= QString::fromStdString(pendu->motEnCours());
   label2->setText(test1);
    QString test2 = QString::fromStdString("Essais restants : ");
   label3->setText(test2);
   int test3= pendu->vie();
   label4->setNum(test3);
   if (pendu->gagne()){
      QString test4 = QString::fromStdString("Fini : vous avez gagné ! ");
      label5->setText(test4);
   }else{
      QString test5 = QString::fromStdString("Fini:vous avez perdu ! ");
         label5->setText(test5);
               QString test6 = QString::fromStdString("Le mot à trouver était: ");
                  label6->setText(test6);
            QString test7= QString::fromStdString(pendu->solution());
      label7->setText(test7);
   }
}
je me suis permis de changer la balise spoiler en code.

le code que tu fournis, bien qu'inutilement compliqué, a l'air presque correct. pour le simplifier, dans un premier temps, j'écrirais :
Code:
void ObservateurProposition::rafraichir(SujetDObservation * sdo){
   label1->setText(tr("Proposition en cours : "));
   label2->setText(tr(pendu->motEnCours().c_str()));
   label3->setText(tr("Essais restants : "));
   label4->setNum(pendu->vie());
   if (pendu->gagne()){
      label5->setText(tr("Fini : vous avez gagné !"));
   }else{
      label5->setText(tr("Fini : vous avez perdu ! "));
      label6->setText(tr("Le mot à trouver était: "));
      label7->setText(tr(pendu->solution().c_str()));
   }
}
où les appels à Object::tr sont facultatifs mais bienvenus.

puis, dans un second temps, j'aurais :
Code:
void ObservateurProposition::rafraichir(SujetDObservation * sdo){
   label2->setText(tr(pendu->motEnCours().c_str()));
   label4->setNum(pendu->vie());
   if (pendu->gagne()){
      label5->setText(tr("Fini : vous avez gagné !"));
   } else if (pendu->fini()){
      label5->setText(tr("Fini : vous avez perdu ! "));
      label6->setText(tr("Le mot à trouver était: "));
      label7->setText(tr(pendu->solution().c_str()));
   }
}
où le texte des QLabel 1 et 3 (j'aurais donné des noms plus explicites) sont fixés dans le constructeur de l'observateur.

enfin, j'aurais fait comme proposé dans l'énoncé : n'utiliser qu'un seul QLabel pour gérer l'affichage de toutes les informations Smile

en tous cas, le problème que tu rencontres, bien que tu ne dis pas en quoi il consiste, vient probablement d'ailleurs. je parie pour le constructeur.

déboguer en aveugle, c'est fun. c'est à l'esi. avec _Newu et bbthug Wink











_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [c++ TD3]

Message  Contenu sponsorisé Aujourd'hui à 12:34


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum