if(this->scene->itemAt(itemPoint) == 0) // 判断如果鼠标点击的地方没有item的话就返回,itemPoint是鼠标点击的地方
return;
int temp = this->scene->items().indexOf(this->scene->itemAt(itemPoint)); // 记录低鼠标点击的item是属于第几个
this->scene->removeItem(this->scene->itemAt(itemPoint)); // 删除鼠标点击的item
for(int i = temp;i<this->scene->items().count();i++) // 因为scene中被移除了一个item,那么temp记录的是被删除的item的后一个
{
// 这个循环是为了填补空位的,因为被删除了一个,那么被删除后面的item全部都要往前移
int x = (int)this->scene->items().at(i)->pos().x(); // 获取当前第i个item的X坐标
int y = (int)this->scene->items().at(i)->pos().y(); // 获取当前第i个item的y坐标
if(x ==0) // 如果是行的第一个,那么就向上移,去到上一行的最后一个位置
this->scene->items().at(i)->setPos(800,y-200);
else // 如果不是行的第一个,那么就往左边移
this->scene->items().at(i)->setPos(x-200,y);
}
我的代码哪个地方出错了?(拼写错忽略,因为上面的不是我复制过来的),我运行程序后,删除一个item后,后面的移位基本都乱套了,是什么问题呢?方法用错了吗?请高手指点!