[UE4图文系列]8_3.树形图 C++版(二)
书接上回...
(2)UEntryWidgetBase
NativeOnInitialized(初始化函数)实现
类中定义以下成员函数
解析:
①PredictEntryState(推测Entry状态)
注1:父级的勾选状态(checkbox)受子级影响.通过对比子级已勾选数量对比子级数量来决定父级的勾选状态.
注2:
子级Entry全部Checked(子级数量==Count):父级Checked
子级Entry部分Checked 或者 全部UnChecked(子级数量!=Count):父级Undetermined
参考如下图2-2

②RefreshParentEntries(刷新父级Entry状态)
向上递归刷新父级Entry的状态,效果参考2-2
③RefreshChildrenEntries(刷新子级Entry状态)
遍历+递归更新本级Entry的子级Entry(以及子级的子级)的状态.效果参考2-2
④RefreshHierarchyState(刷新层级结构状态,即子父级一块刷新)
效果参考2-2
④OnCheckBoxStateChanged(Checkbox勾选状态改变回调)
该回调函数在本篇开头NativeOnInitialized中绑定.

⑤SwitchFontBySelectState(选中切换字体)
效果参考2-3
⑥SwitchMaterialBySelectState(选中高亮)
效果参考2-3
⑦NativeOnListItemObjectSet
该接口函数触发时会返回Entry对应的Item,根据Item的成员变量Level(层级结构的级别,级树形图中的第n级)来决定Entry的字体大小以及文本缩进长度,如下图2-4

⑧NativeOnItemSelectionChanged
该接口函数在Entry的选中状态改变时触发,效果参考2-3
⑨NativeOnEntryReleased
该接口在Entry被释放的时候触发,将字体和Actor材质还原.
Entry在以下情况会被释放:
1.子级Entry被折叠收起时会触发Release,此外,被展开时会触发NativeOnListItemObjectSet
2.Entry不被绘制时,即在视口中不可见,如随着scrollbox滑动导致看不见,同理,当Entry重新被绘制时,触发NativeOnListItemObjectSet
两种情况效果如下图2-5

UEntryWidgetBase说明到此结束,后续内容会在第三篇更新,敬请期待