实际中,我们经常要求点击按钮,读取数据库中的某张表,用树形结构显示表中的数据关系。就是按左边数据查询内容生成右边的表。比如:
为了便于理解,我借用了上图。理解要实现什么就行。
这里只讲技术,于是我把业务剥离,抽象成数字。
输入为左图所示,输出为右图所示。
有两种实现路径:
1.硬代码写。
2.递归。
- 硬代码写
2.递归。
2.1.什么是递归?
简单的说就是自己调用自己。
伪代码就是 def countdown(i):
print i
if i<=0: ---基线条件
return
else:
countdown(i-1)
如果没有“基线条件”会没完没了。
2.2 此处的递归函数
根节点 void departTree(QTreeWidget *root_WidgetItem,QString l_dpParentId)
子节点 void departTree(QTreeWidgetItem *item_WidgetItem,QString l_dpParentId)
根节点 void departTree(QTreeWidget *root_WidgetItem,QString l_dpParentId)
{
//根据l_dpParentId 查询
while (query.next())
{
if(!str_dpName.isEmpty())//结果不为空,
{
departTree(root_WidgetItem,l_dpParentId);// 调用自己
}
}
}
子节点 void departTree(QTreeWidgetItem *item_WidgetItem,QString l_dpParentId)
{}