[C++]Tetravex QPainter lancement

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

[C++]Tetravex QPainter lancement

Message  aleben89 le Jeu 07 Avr 2011, 08:24

Bonjour,

j'aimerais savoir quand PaintEvent(QPaintEvent * event) est appelé. Car je crée mes tétras gaphiques grâce à paintEvent, par contre une fois afficher je n'arrive pas à les effacé Sad.

Comment faire ?

merci de votre aide

aleben89

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

Re: [C++]Tetravex QPainter lancement

Message  smb le Jeu 07 Avr 2011, 08:54

aleben89 a écrit:Bonjour,

j'aimerais savoir quand PaintEvent(QPaintEvent * event) est appelé. Car je crée mes tétras gaphiques grâce à paintEvent, par contre une fois afficher je n'arrive pas à les effacé Sad.

Comment faire ?

merci de votre aide

aleben89

Que veux-tu dire par "je n'arrive pas à les effacer" ?

Si ton TetraGui hérite de QWidget, delete du pointeur le supprime, hide() le cache, ...

Sois un peu plus clair dans tes questions !

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++]Tetravex QPainter lancement

Message  aleben89 le Jeu 07 Avr 2011, 09:28

j'ai mon observateur de tetra restant qui affiche les éléments et quand je met a jour les tetras "remontent" mais le dernier reste le même (j'ai toujours le nombre de tetra qui sont afficher)

Code:
void ObservateurTetraRestant::rafraichir(SujetDObservation * tetravex)
{

   colonne=0;
   rangee=0;

   for(unsigned i=0;i<tetras.size();i++)
         delete tetras[i];
   tetras=vector<TetraLabel *>();
   for(unsigned i=0;i<tetravex->getTetrasNonPlaces().size();i++)
   {
      tetras.push_back(new TetraLabel(tetravex->getTetrasNonPlaces()[i],this,itemData/*,5+56*colonne,5+56*rangee*/));
      tetras[i]->setGeometry(5+56*colonne,(56*rangee)+5,51,51);
      tetras[i]->show();
      rangee++;
      if((i+1)%5==0)
      {
         colonne++;
         rangee=0;
      }
   }

}

voici 2 images pour illustrer:

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

Re: [C++]Tetravex QPainter lancement

Message  smb le Jeu 07 Avr 2011, 10:06

Bizarre, en effet !

Remplace ta première boucle

Code:

for(unsigned i=0;i<tetras.size();i++)
  delete tetras[i];

par

Code:

for(unsigned i=0;i<tetras.size();i++) {
  tetras[i]->hide();
  delete tetras[i];
}
this->repaint(); // ne devrait pas être nécessaire, mais bon ...

pour voir ...

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++]Tetravex QPainter lancement

Message  aleben89 le Jeu 07 Avr 2011, 10:13

ça ne change rien Sad

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

Re: [C++]Tetravex QPainter lancement

Message  smb le Jeu 07 Avr 2011, 10:23

aleben89 a écrit:ça ne change rien Sad

... il doit y avoir autre chose dans le code qui pose problème ... mais sans le voir complètement ...

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++]Tetravex QPainter lancement

Message  aleben89 le Jeu 07 Avr 2011, 10:30

je vous ai envoyé le code e tetraRestant par pm

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

Re: [C++]Tetravex QPainter lancement

Message  smb le Jeu 07 Avr 2011, 10:52

aleben89 a écrit:je vous ai envoyé le code e tetraRestant par pm

C'est quoi le delete tl dans ton destructeur ...

... ce qu'il me faut c'est ton projet complet !

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++]Tetravex QPainter lancement

Message  aleben89 le Jeu 07 Avr 2011, 11:03

étant un atrribut pointeur, je dois le delete lors de la suppression de mon objet

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

Re: [C++]Tetravex QPainter lancement

Message  smb le Jeu 07 Avr 2011, 14:24

aleben89 a écrit:étant un atrribut pointeur, je dois le delete lors de la suppression de mon objet

... et où se fait l'allocation ?

En tout cas, faire ce qui suit dans rafraichir de ObservateurTetraRestant résoud en partie ton problème, pour le reste il y a pas mal de choses bizarres dans tes allocations/destructions

Code:

for ( unsigned i=0; i< tetras.size(); ++i) {
  tetras.at(i)->hide();
}

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++]Tetravex QPainter lancement

Message  Contenu sponsorisé Aujourd'hui à 12:31


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