Ich möchte alle selektierten Items löschen. Da Items die gelöscht werden auch andere Items löschen, gehe ich das Ergebnis von QList mit einer Schleife durch und nach jedem Löschen forder ich eine neue Liste an.
Das half schon mal weiter. Jedoch habe ich seit neusten bei jedem Item eine
collidingItems - Abfrage (wenn ein Item gelösch wird) eingebaut. Und genau dort crasht das Programm manchmel wenn ich mehrere Items lösche.
hier meine Lösch-Funktion:
Code: Alles auswählen
void QMeineScene::deleteElements( )
{
bool bDelete;
QList<QGraphicsItem *> pItemList;
do
{
bDelete = false;
pItemList = selectedItems();
foreach( QGraphicsItem* item, pItemList )
{
if ( item )
{
Element *pElement = dynamic_cast< Element* >( item );
if ( pElement )
{
pElement->deleteonMatrix( ); // hier steckt die collidingItems - Abfrage!!
removeItem( item );
delete pElement;
// Da nach einem gelöschten Element auch weitere QGraphicsItems wegfallen können
// muss eine neue Liste der selektierten Items angefordert werden
bDelete = true;
pItemList.clear();
break;
}
}
}
}
while ( bDelete == true );
update();
}