[UE4圖文系列]8_3.樹形圖 C++版(二)
書接上回...
(2)UEntryWidgetBase
NativeOnInitialized(初始化函數(shù))實(shí)現(xiàn)
類中定義以下成員函數(shù)?
解析:
①PredictEntryState(推測(cè)Entry狀態(tài))
注1:父級(jí)的勾選狀態(tài)(checkbox)受子級(jí)影響.通過對(duì)比子級(jí)已勾選數(shù)量對(duì)比子級(jí)數(shù)量來決定父級(jí)的勾選狀態(tài).
注2:
子級(jí)Entry全部Checked(子級(jí)數(shù)量==Count):父級(jí)Checked
子級(jí)Entry部分Checked 或者 全部UnChecked(子級(jí)數(shù)量!=Count):父級(jí)Undetermined
參考如下圖2-2

②RefreshParentEntries(刷新父級(jí)Entry狀態(tài))
向上遞歸刷新父級(jí)Entry的狀態(tài),效果參考2-2
③RefreshChildrenEntries(刷新子級(jí)Entry狀態(tài))
遍歷+遞歸更新本級(jí)Entry的子級(jí)Entry(以及子級(jí)的子級(jí))的狀態(tài).效果參考2-2
④RefreshHierarchyState(刷新層級(jí)結(jié)構(gòu)狀態(tài),即子父級(jí)一塊刷新)
效果參考2-2
④OnCheckBoxStateChanged(Checkbox勾選狀態(tài)改變回調(diào))
該回調(diào)函數(shù)在本篇開頭NativeOnInitialized中綁定.

⑤SwitchFontBySelectState(選中切換字體)
效果參考2-3
⑥SwitchMaterialBySelectState(選中高亮)
效果參考2-3
⑦NativeOnListItemObjectSet
該接口函數(shù)觸發(fā)時(shí)會(huì)返回Entry對(duì)應(yīng)的Item,根據(jù)Item的成員變量Level(層級(jí)結(jié)構(gòu)的級(jí)別,級(jí)樹形圖中的第n級(jí))來決定Entry的字體大小以及文本縮進(jìn)長(zhǎng)度,如下圖2-4

⑧NativeOnItemSelectionChanged
該接口函數(shù)在Entry的選中狀態(tài)改變時(shí)觸發(fā),效果參考2-3
⑨NativeOnEntryReleased
該接口在Entry被釋放的時(shí)候觸發(fā),將字體和Actor材質(zhì)還原.
Entry在以下情況會(huì)被釋放:
1.子級(jí)Entry被折疊收起時(shí)會(huì)觸發(fā)Release,此外,被展開時(shí)會(huì)觸發(fā)NativeOnListItemObjectSet
2.Entry不被繪制時(shí),即在視口中不可見,如隨著scrollbox滑動(dòng)導(dǎo)致看不見,同理,當(dāng)Entry重新被繪制時(shí),觸發(fā)NativeOnListItemObjectSet
兩種情況效果如下圖2-5

UEntryWidgetBase說明到此結(jié)束,后續(xù)內(nèi)容會(huì)在第三篇更新,敬請(qǐng)期待?