我有一个子弹类,我想在击中任何东西时删除,但如果它击中了敌人,我希望它也能删除敌人。它正在我的桌面上工作,但在切换到我的笔记本电脑时,它会在它移除时开始崩溃。目前我的场景位于Dialog.cpp的另一个类中
这是我的代码:
bullet.cpp
void bullet::DoCollision()
{
QList<QGraphicsItem *> list = collidingItems() ;
foreach(QGraphicsItem * i , list)
{
if (i->type() == 3)
{
QGraphicsItem * item= i;
delete item;
qDebug() << "bye";
}
}
m_FireTimer->stop();
delete this;
}
答案 0 :(得分:0)
您应该使用QGraphicsScene::removeItem(QGraphicsItem * item)
从场景中删除项目及其所有子项。您应该在myScene
等变量中保存指向场景的指针。
您的代码应该是:
void bullet::DoCollision()
{
QList<QGraphicsItem *> list = collidingItems() ;
foreach(QGraphicsItem * i , list)
{
if (i->type() == 3)
{
QGraphicsItem * item= i;
myScene->removeItem(item);
delete item;
qDebug() << "bye";
}
}
m_FireTimer->stop();
delete this;
}