参考duilib的demo和网上的例子,找了很多都没有找到具体的实现方式。最终在查找TreeView函数中找到具体的方法,于此写下文章作为记录。
1、获取子节点和复选框状态
//循环查找子节点与checkBox状态
CTreeNodeUI * node= nullptr;
CDuiString temp;
CDuiString tempName;
bool flag;
CCheckBoxUI* CheckBox;
for (int i = 0; i < pTreeView->GetCount(); i++)
{
node = static_cast<CTreeNodeUI*>(pTreeView->GetItemAt(i));
temp= node->GetText();
tempName = node->GetName();
CheckBox = node->GetCheckBox();
flag = CheckBox->GetCheck();
}
2、动态新增节点
pTreeView = static_cast<CTreeViewUI*>(m_pm.FindControl(_T("treeview")));
pTreeView->SetVisibleCheckBtn(true);
pTreeView->SetVisibleFolderBtn(true);
pTreeView->SetItemExpand(false, NULL);
CTreeNodeUI* pItem = new CTreeNodeUI();
pItem->CheckBoxSelected(false);
pItem->SetItemText(_T("老化架"));
pItem->SetName(_T("AgingMonition"));
CTreeNodeUI* pItem1_1[1024];
CTreeNodeUI* pNodeItem[10];
int TreeNodeItem_Number = 0;
/****************A********************/
pNodeItem[TreeNodeItem_Number] = new CTreeNodeUI();
pNodeItem[TreeNodeItem_Number]->CheckBoxSelected(false);
pNodeItem[TreeNodeItem_Number]->SetItemText(_T("A"));
pNodeItem[TreeNodeItem_Number]->SetName(_T("A"));
for (int i = 0; i < 30; i++)
{
pItem1_1[i] = new CTreeNodeUI();
CDuiString temp;
if (i < 10)
{
temp.Format(_T("A0%d"), i);
}
else
{
temp.Format(_T("A%d"), i);
}
pItem1_1[i]->CheckBoxSelected(false);
pItem1_1[i]->SetItemText(temp);
pItem1_1[i]->SetName(temp);
}
pTreeView->Add(pItem); //要先添加父节点,,在添加子节点和样式
pItem->AddChildNode(pNodeItem[TreeNodeItem_Number]);
for (int i = 0; i < 30; i++)
{
pNodeItem[TreeNodeItem_Number]->AddChildNode(pItem1_1[i]);
pItem1_1[i]->SetAttribute(_T("itemattr"), _T("valign="center""));
pItem1_1[i]->SetAttribute(_T("Style"), _T("treeview_item_NoCheckBox_style"));
}
/************************************/
/****************B********************/
pNodeItem[++TreeNodeItem_Number] = new CTreeNodeUI();
pNodeItem[TreeNodeItem_Number]->CheckBoxSelected(false);
pNodeItem[TreeNodeItem_Number]->SetItemText(_T("B"));
pNodeItem[TreeNodeItem_Number]->SetName(_T("B"));
for (int i = 10; i < 20; i++)
{
pItem1_1[i] = new CTreeNodeUI();
CDuiString temp;
if (i < 10)
{
temp.Format(_T("B0%d"), i);
}
else
{
temp.Format(_T("B%d"), i);
}
pItem1_1[i]->CheckBoxSelected(false);
pItem1_1[i]->SetItemText(temp);
pItem1_1[i]->SetName(temp);
}
//pTreeView->Add(pItem); //要先添加父节点,,在添加子节点和样式
pItem->AddChildNode(pNodeItem[TreeNodeItem_Number]);
for (int i = 10; i < 20; i++)
{
pNodeItem[TreeNodeItem_Number]->AddChildNode(pItem1_1[i]);
pItem1_1[i]->SetAttribute(_T("itemattr"), _T("valign="center""));
pItem1_1[i]->SetAttribute(_T("Style"), _T("treeview_item_NoCheckBox_style"));
}
/**************************************/
for (int i = 0; i <= TreeNodeItem_Number; i++)
{
pNodeItem[i]->SetAttribute(_T("itemattr"), _T("valign="center""));
pNodeItem[i]->SetAttribute(_T("Style"), _T("treeview_item_style"));
}
pItem->SetAttribute(_T("itemattr"), _T("valign="center""));
pItem->SetAttribute(_T("Style"), _T("treeview_item_style"));
pTreeView->SetAttribute(_T("itemattr"), _T("valign="center""));
pTreeView->SetAttribute(_T("Style"), _T("treeview_item_style"));