P_Scene->removeItem(item);
使用QGraphicsScene的setItemIndexMethod(QGraphicsScene::NoIndex);
禁用索引的快速查询,即可解决上述问题。
对于使用removeItem()后是否还需要delete的问题,官方问题有给出明确解释
Removes the item item and all its children from the scene. The ownership of item is passed
on to the caller (i.e., QGraphicsScene will no longer delete item when destroyed).
从场景中remove该item及其所有子item。 item的所有权将传递给调用者(即,QGraphicsScene在销毁时将不会删除item)。
用QGraphicsScene删除item有时候会出现崩溃现象。P_Scene->removeItem(item);解决方式使用QGraphicsScene的setItemIndexMethod(QGraphicsScene::NoIndex);禁用索引的快速查询,即可解决上述问题。其他对于使用removeItem()后是否还需要delete的问题,官方问题有给出明确解释Removes the item item and all its children from the
对一个GraphicsView控件进行自定义提升,添加了滚轮缩放、右键菜单等功能。
右键菜单有一个清空图像的功能,原本使用场景的clear方法,但是报错:debug assertion failed。
改为使用
remove
Item
s方法一个个去除场景中的
item
s:
void My_GraphicsView::clearAll(bool)
foreach(QGraphicsIt...
原文:http://beself.top/2020/02/14/
qt
-
qgraphicsscene
-delete-
item
/
管理
QGraphicsScene
中的
Item
s其实不是很方便,本文操作的是
删除
QGraphicsScene
中的
Item
删除
QGraphicsScene
中选中的
Item
s
要执行此操作首先需要在添加
Item
的时候设置
Item
为可被选中
中是获取选中的
Item
列表
循环...
//测试:选择图元
//获得所有元素的指针列表
QList<
QGraphicsItem
*>
item
_list_p = view->scene->
item
s();
//选择所有图元
fo...
最近调程序,发现个qgraphicsceen相关的bug,觉得有必要记录一下
程序crash的时候,提示的内容与
QGraphicsScene
Find
Item
BspTreeVisitor::visit相关。
查了一下相关资料,发现
QGraphicsScene
内部有个BspTree,用来方便索引sceen内部的
item
,但使用
QGraphicsScene
::
remove
Item
之后,delete
item
的时候(如果只是
remove
item
的话,内存不会被释放,不停地增加
删除
item
的时候会导致内存泄露,所以在