如图,我想把左边树中勾选的节点移动到右边的树中。
我是用QTreeWidgetItemIterator这个类遍历树的,但这个类的缺点就是它是顺序遍历,不分父节点子节点。
这样的话如何将节点按照不变的父子关系整体保存并添加到右边的树中?
QTreeWidgetItemIterator it(ui->treeWidget_Left, QTreeWidgetItemIterator::Checked);
while (*it)
{
//这里该具体怎样实现?
++it;
}
------解决方案--------------------
如果子节点有选中,则父节点一定是选中或者半选中状态(因为可能其它的子节点或子子节点没有选中)。
这段代码能输出所以已选中的节点。
auto leftTree = this->ui->treeWidgetLeft;
QTreeWidgetItemIterator it(leftTree,
QTreeWidgetItemIterator::Checked
------解决方案--------------------
QTreeWidgetItemIterator::NoChildren);
while (*it) {
QString test = (*it)->text(0) + "
------解决方案--------------------
";
auto temp = (*it)->parent( );
while (temp) {
test += temp->text(0) + "
------解决方案--------------------
";
temp = temp->parent( );
};
qDebug( ) << test;
++it;
};
leftTree->expandAll( );