QTreeWidgetItem *branchWithFiles(const ChromTreeItem *cti_source) { bool keep = false; auto node = new QTreeWidgetItem(); if(cti_source->isFileItem()) { keep = true; } for (int i = 0; i < cti_source->childCount(); i++) { auto *child = static_cast(cti_source->child(i)); auto subbranch = branchWithFiles(child); if(subbranch) { node->addChild(subbranch); keep = true; } } if(!keep) { delete node; return nullptr; } node->setText(0, cti_source->text(0)); if(cti_source->file) { node->setText(1, QString::number(cti_source->file->fileID())); } return node; }