• 6643阅读
  • 3回复

[讨论]qgraphicsscene中的clear如何使用的 [复制链接]

上一主题 下一主题
离线zfszfs
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-18
我需要一个功能是,点击鼠标后,清除所有的item,并重新添加新的item。
connect(this,SIGNAL(signalClearScene()),myWindow->scene,SLOT(clear()));
编译通过。
点击鼠标后

    emit signalClearScene();
    添加新的item等等、

第一次点击鼠标后,出来正常的scene和视图窗口
再次点击后,程序直接退出了,说:Segmentation fault。
我是不是我的用法有错误
应该如何使用,谢谢。
离线bran_lee

只看该作者 1楼 发表于: 2014-08-18
是不是clear后,旧的item指针仍被访问?
当你只有锤子时,你看什么都像是钉子!
离线zfszfs

只看该作者 2楼 发表于: 2014-08-18
这个我不是很清楚。我再看看程序流程,可能是我的程序结构有问题。
添加的item,全部应该new出来吗?
我有个item不是添加的时候new出来的,是在使用之前就new出来的。
不知道是不是clear的时候,把他给delete了。
这里面只是说了从scene删除item,并没有说delete那个对象的指针。
Removes and deletes all items from the scene, but otherwise leaves the state of the scene unchanged.
This function was introduced in Qt 4.4.
See also addItem().
离线bran_lee

只看该作者 3楼 发表于: 2014-08-18
回 zfszfs 的帖子
zfszfs:
这个我不是很清楚。我再看看程序流程,可能是我的程序结构有问题。
添加的item,全部应该new出来吗?
我有个item不是添加的时候new出来的,是在使用之前就new出来的。
不知道是不是clear的时候,把他给delete了。
这里面只是说了从scene删除item,并没有说delete那个对象的指针。
.......

注意这一句“This scene takes ownership of the item.”
QGraphicsScene接管了item,clear操作时“Removes and deletes all items from the scene”,释放QGraphicsScene时也会自动delete掉所有item,除非调用removeItem
当你只有锤子时,你看什么都像是钉子!
快速回复
限100 字节
 
上一个 下一个