QTreeWidgetItemIterator 遍历QTree

最后更新于:2022-04-02 02:11:11

[TOC] ## 概述 迭代器 QTreeWidgetItemIterator 专门用于遍历树形控件或某个父节点的所有子孙条目 ①先序遍历( pre-order traversal ):根节点->左子树->右子树;对于每棵子树内的遍历顺序也一样类推。 以上图为例,先序遍历为:A  ->B->D->E  ->  C->F->G。 对于多叉树,先序遍历规则就是:根节点->第一棵子树->第二棵子树->第三棵子树 等等。 ②后序遍历( post-order traversal ):左子树->右子树->根节点;对于每棵子树内的遍历顺序也一样类推。后序遍历时父节点和根节点一定是在后面出现的,所以遍历时打头的是叶子。 以上图为例,后序遍历为:D->E->B  ->  F->G->C  ->A。 对于多叉树,后序遍历规则就是:第一棵子树->第二棵子树->第三棵子树....->根节点。 ③中序遍历( in-order traversal ):左子树->根节点->右子树;对于每棵子树内的遍历顺序也一样类推。这种遍历仅对二叉树有意义,二叉树的父节点正好在左右子树中间,但多叉树没有中间的概 念。 以上图为例,中序遍历为:D->B->E  ->A  ->F->C->G。 ④按层遍历( level-order traversal ):第0层->第1层->第2层 ……。这种很直观,比如上面的树就是 A->B->C->D->E->F->G 。 ![](https://qtguide.ustclug.org/images/ch08/ch08-03-06.png) 常用函数 ``` QTreeWidgetItemIterator(const QTreeWidgetItemIterator & it) // 复制构造函数,构造时新迭代器的当前条目也与 it 的当前条目一样 QTreeWidgetItemIterator(QTreeWidget * widget, IteratorFlags flags = All) // 遍历整个QTreeWidget QTreeWidgetItemIterator(QTreeWidgetItem * item, IteratorFlags flags = All) // 以某个 QTreeWidgetItem 为根 ``` IteratorFlags 参数 |IteratorFlags枚举常量 |数值| 描述| |---|---|---| |QTreeWidgetItemIterator::All |0x00000000 | 默认值,枚举所有节点。| |QTreeWidgetItemIterator::Hidden |0x00000001| 枚举隐藏节点。| |QTreeWidgetItemIterator::NotHidden |0x00000002| 枚举非隐藏节点。| |QTreeWidgetItemIterator::Selected |0x00000004| 枚举高亮选中节点。| |QTreeWidgetItemIterator::Unselected |0x00000008| 枚举未选中节点。| |QTreeWidgetItemIterator::Selectable |0x00000010| 枚举可以选中的节点。| |QTreeWidgetItemIterator::NotSelectable |0x00000020| 枚举不可选中的节点。| |QTreeWidgetItemIterator::DragEnabled |0x00000040| 枚举能够拽出的节点。| |QTreeWidgetItemIterator::DragDisabled |0x00000080| 枚举不能拽出去的节点。| |QTreeWidgetItemIterator::DropEnabled |0x00000100| 枚举可接收拖进来的节点。| |QTreeWidgetItemIterator::DropDisabled |0x00000200| 枚举不能接收拖进来的节点。| |QTreeWidgetItemIterator::HasChildren |0x00000400| 枚举所有父节点。| |QTreeWidgetItemIterator::NoChildren |0x00000800| 枚举所有叶子节点。| |QTreeWidgetItemIterator::Checked |0x00001000| 枚举复选框勾选的节点。| |QTreeWidgetItemIterator::NotChecked |0x00002000| 枚举复选框没有勾选的节点。| |QTreeWidgetItemIterator::Enabled |0x00004000| 枚举所有启用的节点。| |QTreeWidgetItemIterator::Disabled |0x00008000| 枚举所有禁用的节点。| |QTreeWidgetItemIterator::Editable |0x00010000| 枚举可以编辑的节点。| |QTreeWidgetItemIterator::NotEditable |0x00020000| 枚举不能编辑的节点。| |QTreeWidgetItemIterator::UserFlag |0x01000000| 枚举自定义的用户节点。| ## 示例 ``` QTreeWidgetItemIterator it(treeWidget); while (*it) { if ((*it)->text(0) == itemText) (*it)->setSelected(true); ++it; } ```
';