UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WidgetTree.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/Object.h"
9#include "Widgets/SWidget.h"
10#include "Components/Widget.h"
14
15#include "WidgetTree.generated.h"
16
18UCLASS(MinimalAPI)
20{
22
23public:
24
25 // Begin UObject
26 UMG_API virtual UWorld* GetWorld() const override;
27 // End UObject
28
30 UMG_API UWidget* FindWidget(const FName& Name) const;
31
34
36 template <typename WidgetT>
37 inline WidgetT* FindWidget(const FName& Name) const
38 {
39 return Cast<WidgetT>(FindWidget(Name));
40 }
41
43 UMG_API bool RemoveWidget(UWidget* Widget);
44
46 static UMG_API class UPanelWidget* FindWidgetParent(UWidget* Widget, int32& OutChildIndex);
47
52 static UMG_API UWidget* FindWidgetChild(UPanelWidget* ParentWidget, FName ChildWidgetName, int32& OutChildIndex);
53
58 static UMG_API int32 FindChildIndex(const UPanelWidget* ParentWidget, const UWidget* ChildWidget);
59
61 UMG_API void GetAllWidgets(TArray<UWidget*>& Widgets) const;
62
64 static UMG_API void GetChildWidgets(UWidget* Parent, TArray<UWidget*>& Widgets);
65
67 static UMG_API bool TryMoveWidgetToNewTree(UWidget* Widget, UWidgetTree* DestinationTree);
68
74 UMG_API void ForEachWidget(TFunctionRef<void(UWidget*)> Predicate) const;
75
80 UMG_API void ForEachWidgetAndDescendants(TFunctionRef<void(UWidget*)> Predicate) const;
81
87 static UMG_API void ForWidgetAndChildren(UWidget* Widget, TFunctionRef<void(UWidget*)> Predicate);
88
92 void ForEachWidgetUntil(TFunctionRef<bool(UWidget*)> Predicate) const;
93
97 static UMG_API bool ForEachWidgetAndChildrenUntil(UWidget* Widget, TFunctionRef<bool(UWidget*)> Predicate);
98
99
101 template <typename WidgetT>
102 [[nodiscard]] inline WidgetT* ConstructWidget(TSubclassOf<WidgetT> WidgetClass = WidgetT::StaticClass(), FName WidgetName = NAME_None)
103 {
104 if(WidgetClass != nullptr)
105 {
106 if constexpr(std::is_base_of_v<UUserWidget, WidgetT>)
107 {
108 return CreateWidget<WidgetT>(this, *WidgetClass, WidgetName);
109 }
110 else
111 {
112 static_assert(std::is_base_of_v<UWidget, WidgetT>, "WidgetTree::ConstructWidget can only create UWidget objects.");
113 return NewObject<WidgetT>(this, WidgetClass, WidgetName, RF_Transactional);
114 }
115 }
116
117 return nullptr;
118 }
119
120 // INamedSlotInterface
121 //----------------------------------------------------------------------------------------
122
124 UMG_API virtual void GetSlotNames(TArray<FName>& SlotNames) const override;
125
127 UMG_API virtual UWidget* GetContentForSlot(FName SlotName) const override;
128
130 UMG_API virtual void SetContentForSlot(FName SlotName, UWidget* Content) override;
131
132 //----------------------------------------------------------------------------------------
133
134 // UObject interface
135 UMG_API virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override;
136 UMG_API virtual void PostLoad() override;
137 // End of UObject interface
138
139public:
141 UPROPERTY(Instanced)
142 TObjectPtr<UWidget> RootWidget;
143
149 UPROPERTY()
150 TMap<FName, TObjectPtr<UWidget>> NamedSlotBindings;
151
153
154#if WITH_EDITORONLY_DATA
155 UPROPERTY(Instanced)
157#endif
158};
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
@ RF_Transactional
Object is transactional.
Definition ObjectMacros.h:562
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition NameTypes.h:617
Definition ObjectSaveContext.h:244
Definition NamedSlotInterface.h:23
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition SubclassOf.h:30
Definition Object.h:95
Definition PanelWidget.h:15
Definition WidgetTree.h:20
WidgetT * ConstructWidget(TSubclassOf< WidgetT > WidgetClass=WidgetT::StaticClass(), FName WidgetName=NAME_None)
Definition WidgetTree.h:102
WidgetT * FindWidget(const FName &Name) const
Definition WidgetTree.h:37
Definition Widget.h:217
Definition World.h:918
Definition ObjectPtr.h:488