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) :
Code C/C++ :
void Board::updateGraphics() {
//quelques essais, mais rien ne marche...
for(int i=0 ; i<blocksBoardQSvg.size() ; i++)
delete blocksBoardQSvg[i];
blocksBoardQSvg.clear();
for(int i=0 ; i<=21 ; i++)
for(int j=0 ; j<=9 ; j++)
if(blocksBoard[j][i]!=0) {
blocksBoardQSvg.push_back(new QSvgWidget("pictures/grey.svg", this));
blocksBoardQSvg.back()->show();
blocksBoardQSvg.back()->resize(blockSize, blockSize);
blocksBoardQSvg.back()->move(blockSize*j, blockSize*i);
}
}
Donc comment faire pour supprimer ces QSvgWidget ?
Merci.