[Qt] supprimer tous les QSvgWidget d'un vector

Signaler
Messages postés
24
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Bonjour,
je suis en train de programmer un tetris en utilisant Qt, mais je bloque actuellement sur un petit problème.
J'ai une fonction updateGraphics() appelée à chaque seconde qui va se charger d'insérer dans un vector des QSvgWidget et les placer au bon endroit suivant un tableau d'entier.
Le problème c'est que je n'arrive pas à supprimer les QSvgWidget déjà dans mon vector, ce qui cause deux problèmes :
- quand je modifie la taille de ma fenêtre les nouveaux blocs s'affichent au bon endroit à la bonne dimension mais ceux précédemment créés ne s'effacent pas,
- vu que rien n'est supprimé, de plus en plus de QSvgWidget sont dessinés, ce qui ralenti fortement le programme.

Voilà le code (j'ai supprimé quelques passages mais à part ce problème de suppression, tout marche très bien) :
void Board::updateGraphics() {
   //quelques essais, mais rien ne marche...
   for(int i=0 ; ishow();
            blocksBoardQSvg.back()->resize(blockSize, blockSize);
            blocksBoardQSvg.back()->move(blockSize*j, blockSize*i);
         }
}


Donc comment faire pour supprimer ces QSvgWidget ?
Merci.

1 réponse

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
9
La classe QVector (ou vector) possède deux fonctions:

.pop_back() : à l'inverse de push_back() il supprime le dernier élement du vecteur.
.remove(int index) : supprime un élément à une position du vecteur (index).

donc essaie blocksBoardQSvg->pop_back() (ou remove() si ce n'est pas le dernier qu'il faut supprimer).


Pop70