UE4全反射零耦合笔记——UMG与C++交互

1,创建Widget

//创建Widget方法一:CreateWidget
//UXXXWidgetClass是UClass
UXXXWidget* XWidget = CreateWidget< UXXXWidget >(GetWorld(),UXXXWidgetClass);

//创建Widget方法二 : 通过WidgetThree创建组件,只能在Widget内部创建
UImage* DynImage = WidgetTree->ConstructWidget<UImage>(UImage::StaticClass());

2,获取UI控件

//获取方式一:强转子集
	UCanvasPanel*  RootPanel = Cast<UCanvasPanel>(GetRootWidget());
	if (RootPanel)
	{
    
    
		UImage*  BGImage = Cast<UImage>(RootPanel->GetChildAt(0));
	}

//获取控件方法二: GetWidgetFromName
	UButton* ButtonTwo = (UButton*)GetWidgetFromName(TEXT("ButtonTwo"));

	//获取控件方法三 : 反射绑定, 变量名和UMG里的控件名要一致
	UPROPERTY(Meta = (BindWidget))
		UButton* ButtonOne;

3,绑定按钮事件

//绑定按钮事件方法一 :	__Internal_AddDynamic
	ButtonOne->OnClicked.__Internal_AddDynamic(this, &UFWAffectWidget::ButtonOneEvent, FName("ButtonOneEvent"));

//绑定按钮事件方法二 :  FScriptDelegate
	FScriptDelegate ButTwoDel;
	ButTwoDel.BindUFunction(this, "ButtonTwoEvent");
	ButtonTwo->OnReleased.Add(ButTwoDel);

//绑定按钮方法三 : BlueprintCallable函数

4,添加组件与删除组件

//添加组件
UUserWidget->AddChild***
//移除组件
UUserWidget ->RemoveChild(DynImage);
UUserWidget ->RemoveFromParent();

猜你喜欢

转载自blog.csdn.net/qq_41363459/article/details/111466278