Unsolved how to strip unselected items from a QTreeWidgetItem branch
-
I need to clone a branch in a QTreeWidget where only selected items are returned. For example...
menu 1 |-not a menu 1 |-not a menu 2 (*) |-menu 2 (*) |-not a menu 3 |-menu 3 |-not a menu 4 (*)
If I call tree->selectedItems() I get [not a menu 2, menu 2, not a menu 4]. I then clone the highest level items. Code abbreviated...
bool highestLevel(QTreeWidgetItem *item); QTreeWidgetItem* stripUnselected(QTreeWidgetItem *item); for (i < selectedTotal) { // only want highest level items if (!highestLevel(items[i])) continue; clone = items[i]->clone(); onlySelected = stripUnselected(clone); }
The highestLevel function tests whether the item has a parent selected. If there's a selected parent it skips ahead to the next iteration. The stipUnselected function is where I'm having trouble. How can I loop through the entire cloned branch, detect unselected items, remove them, but also retain their children?
In the example above the onlySelected item would contain...
// first iteration
onlySelected = not a menu 2
// second iteration
onlySelected = menu 2 > not a menu 4How can I code the stripUnselected function?