【vtk】renderer如何删除已添加的vtkactor

本文讲述了如何在函数中动态添加actor到renderer,并通过actorcollection的编号管理和id查找,实现actor的高效删除。作者分享了使用actorcollection的getitemasobject和类型转换技巧来处理这一问题。
摘要由CSDN通过智能技术生成

我在某个函数里给renderer->addactor(一个actor)。

因为renderer可以加多个actor,这里我就没有将actor写成类成员变量,只是函数里临时new出来的。

 

后来我想要remove掉这个actor时傻眼了。因为获取不到actor的指针了。

 

解决思路:

actor有个类似list的容器叫actorcollection。我每次将actor加入renderer的时候,actorcollection也就additem这个对象。然后记下actor的编号到QStringList。

 

想要删除actor时,有对应的id。在QStringList中获取id所在的位置为index(就是第几次存入的actor),将对应id给remove掉,然后actorcollection有函数getitemasobject(int i),将index填入就能获取到对应的actor,但是返回的数据类型是vtkobject,这里可以直接强制转换为vtkactor,然后renderer把这个actor给remove掉,然后actorcollection将这个actor给remove掉。就此解决。

 

a35679b1452544068a9ad3676f889a6d.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值