gpt4 book ai didi

c++ - 如何递归删除Qt3DWindow根实体中的所有节点?

转载 作者:行者123 更新时间:2023-11-30 05:10:16 26 4
gpt4 key购买 nike

我想删除 Qt3DWindow 根场景的所有根节点。它包含多个层次结构级别的节点。我想删除引用并删除对象。最简单的方法是什么?

最佳答案

我用这个递归函数来做:

void deleteChildrenRecursively(Qt3DCore::QNodeVector& vector)
{
foreach(Qt3DCore::QNode* node, vector){
Qt3DCore::QEntity* entity = (Qt3DCore::QEntity*)node;
QList<Qt3DCore::QComponent*> componentsToDelete;
foreach(Qt3DCore::QComponent* component, entity->components()){
entity->removeComponent(component);
delete(component);
component = NULL;
}
deleteChildrenRecursively(node->childNodes());
delete(node);
node = NULL;
}
}

它递归地删除所有 QEntity 及其 QComponent 对象。

用法:

Qt3DCore::QEntity* rootEntity = new Qt3DCore::QEntity();
view->setRootEntity(rootEntity)
...
deleteChildrenRecursively(rootEntity->childNodes());

关于c++ - 如何递归删除Qt3DWindow根实体中的所有节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com