• 3862阅读
  • 4回复

scene内的item位置改变的问题 [复制链接]

上一主题 下一主题
离线lugaideath
 

只看楼主 倒序阅读 楼主  发表于: 2009-10-09
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后,后面的移位基本都乱套了,是什么问题呢?方法用错了吗?请高手指点!
离线lugaideath

只看该作者 1楼 发表于: 2009-10-09
顶下!越来越没有人愿意答问题额
离线xlttap

只看该作者 2楼 发表于: 2009-10-09
你得弄清楚几个坐标系统的关系
我简单我快乐
离线lugaideath

只看该作者 3楼 发表于: 2009-10-10
坐标是没什么问题的,但我觉得问题是存在于那些item上,当获取全部的情况是有序还是没有序的
离线lugaideath

只看该作者 4楼 发表于: 2009-10-10
坐标获取后都是预期的坐标,但设置后就出问题了,第一次前一两个移位还是正确的,但后面的操作都错误了,郁闷死了
快速回复
限100 字节
 
上一个 下一个