[Qt] supprimer tous les QSvgWidget d'un vector

Slyken Messages postés 24 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 11 mars 2010 - 11 mars 2010 à 23:51
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 - 6 avril 2010 à 12:27
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

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
6 avril 2010 à 12:27
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
0
Rejoignez-nous