标题:【提问】checklist树型复制问题
作者:flyingwind
日期:2006-01-11 19:27
内容:
已知一个层次不确定的带可选框的树型目录,现在要复制他的结点,条件是如果某个结点的所有孩子结点都被选中,则复制该结点(但是不能复制其孩子结点)。
例:
a
b
c
child
d
e
f
g
h
如果 b及其所有孩子结点都被选中,则复制时只是复制结点 b。
我想用递归,可是不知道该怎么来找共同点。
#1 [flyingwind 01-13 19:50]
已经解决了,贴一点代码片断(qt版本为3.3.1)
思路:
如果 pListItem 状态为On ,对当前item进行处理,然后递归检测他的下一个结点
如果 pListItem 状态为 NoChange , 递归判断它的第一个孩子结点
如果 pListItem 状态为 Off,判断下一个结点
代码片断:
void CRoleAdminFrm::GetSuperItemOn( QListViewItem* pInListItem)
{
QListViewItem* pListItem = NULL;
QListViewItem* pItem = pInListItem;
QCheckListItem::ToggleStatestate = ((QCheckListItem*)pItem)->state();
switch( state )
{
case QCheckListItem::ToggleState::NoChange:
GetSuperItemOn( pItem->firstChild() );
break;
case QCheckListItem::ToggleState::On:
// 处理选中item的相关操作
if ( pItem->nextSibling())
{
GetSuperItemOn( pItem->nextSibling() );
}
else if( pItem->parent() && (pItem->parent())->nextSibling())
{
GetSuperItemOn( (pItem->parent())->nextSibling() );
}
break;
case QCheckListItem::ToggleState::Off:
if ( pItem->nextSibling())
{
GetSuperItemOn( pIte ..