[UE4圖文系列]8_4.樹形圖 C++版(三)
書接上回...
(3)UTreeViewPanelBase
NativeConstruct函數(shù)實(shí)現(xiàn)
類中定義以下成員函數(shù)
解析:
①FindParentActor

GivenActor:選中的Actor(例如被鼠標(biāo)點(diǎn)擊到的)
bFindTopLevelParent:
true表示查找層級(jí)結(jié)構(gòu)中的最上級(jí),如傳入?yún)⒖紙D3-1中的Cone,返回Cube
false表示查找結(jié)構(gòu)中的上級(jí),如傳入Cone返回Sphere
②StartSelect(選取場(chǎng)景中Actor)
③OnSelectActor(選中Actor)
注1:判斷選中的Actor的父級(jí)Actor是否是上次選中的(即是否切換目標(biāo)),如下圖3-2

注2:在未切換目標(biāo)的情況下,將未被選中的子Entry設(shè)為未選擇狀態(tài)(未高亮)
注3:將選中的Entry設(shè)為已選中(高亮)
效果如下圖3-3

④ExpandItem(展開單個(gè)) ExpandAllItems(展開所有Item)
引擎提供的ExpandAll并不能真正的展開所有的層級(jí)結(jié)構(gòu)

調(diào)用引擎提供的ExpandAll僅能展開了一層結(jié)構(gòu),效果如3-5

為此我們需要自行實(shí)現(xiàn)ExpandAll功能,代碼如下
⑤CollapseAllItem(折疊收起所有Item)
⑥RefreshTreeView(刷新層級(jí)結(jié)構(gòu))
注1:Treeview通過(guò)GetListItems獲得的Item數(shù)組中,第0個(gè)元素表示根Item
注2:刷新時(shí)清空原有的Item
注3:默認(rèn)刷新時(shí)展開所有層級(jí),可根據(jù)自身需求選擇,不想展開就是執(zhí)行ExpandAllItems
⑦OnGetItemChildren
該函數(shù)在Treeview執(zhí)行AddItem時(shí)自動(dòng)觸發(fā).
至此樹形圖三大組成部分代碼更新完畢,下篇會(huì)講解用法.未完待續(xù).....