欢迎光临散文网 会员登陆 & 注册

[UE4图文系列]8_3.树形图 C++版(二)

2023-07-31 17:30 作者:埃罗芒阿Sensal  | 我要投稿

书接上回...

(2)UEntryWidgetBase

NativeOnInitialized(初始化函数)实现

类中定义以下成员函数 

解析:

①PredictEntryState(推测Entry状态)

注1:父级的勾选状态(checkbox)受子级影响.通过对比子级已勾选数量对比子级数量来决定父级的勾选状态.

注2:

子级Entry全部Checked(子级数量==Count):父级Checked

子级Entry部分Checked 或者 全部UnChecked(子级数量!=Count):父级Undetermined

参考如下图2-2

2-2


②RefreshParentEntries(刷新父级Entry状态)

向上递归刷新父级Entry的状态,效果参考2-2


③RefreshChildrenEntries(刷新子级Entry状态)

遍历+递归更新本级Entry的子级Entry(以及子级的子级)的状态.效果参考2-2


④RefreshHierarchyState(刷新层级结构状态,即子父级一块刷新)

效果参考2-2


④OnCheckBoxStateChanged(Checkbox勾选状态改变回调)

该回调函数在本篇开头NativeOnInitialized中绑定.

2-3

⑤SwitchFontBySelectState(选中切换字体)

效果参考2-3

⑥SwitchMaterialBySelectState(选中高亮)

效果参考2-3


⑦NativeOnListItemObjectSet

该接口函数触发时会返回Entry对应的Item,根据Item的成员变量Level(层级结构的级别,级树形图中的第n级)来决定Entry的字体大小以及文本缩进长度,如下图2-4

2-4


⑧NativeOnItemSelectionChanged

该接口函数在Entry的选中状态改变时触发,效果参考2-3


⑨NativeOnEntryReleased

该接口在Entry被释放的时候触发,将字体和Actor材质还原.

Entry在以下情况会被释放:

1.子级Entry被折叠收起时会触发Release,此外,被展开时会触发NativeOnListItemObjectSet

2.Entry不被绘制时,即在视口中不可见,如随着scrollbox滑动导致看不见,同理,当Entry重新被绘制时,触发NativeOnListItemObjectSet

两种情况效果如下图2-5

2-5

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


[UE4图文系列]8_3.树形图 C++版(二)的评论 (共 条)

分享到微博请遵守国家法律