UE4和C++ 开发-C++与UMG的交互2(C++获取UMG的属性)

1、...C++获取UMG的属性

1.1、第一种方法:通过名称获取控件。
复制代码
void UMyUserWidget::NativeConstruct()
{
	Super::NativeConstruct();
 
	//通过名字,获取蓝图控件中的按钮引用。
	CtnClic = Cast<UButton>(GetWidgetFromName(TEXT("Button_44")));
	if (CtnClic)
	{
 
		//绑定到自定义函数
		CtnClic->OnClicked.AddDynamic(this, &UMyUserWidget::TestButtonClick);
	}
}
 
void UMyUserWidget::TestButtonClick()
{
    //测试代码
	UE_LOG(LogTemp, Log, TEXT("dddddd"));
 
    //获取预定义属性后,还要转化为标准属性才能进行操作
	UCanvasPanelSlot* Slot = Cast<UCanvasPanelSlot>(CtnClic->Slot);
	if (Slot)
	{
		
	}
}

优点:可以拿到对象引用,调用系统预定义好的事件(函数)。

缺点:无法拿到在蓝图中创建的属性,可以C++创建控件父类,属性也在C++中定义,这样的话可以拿到。

1.2、第二种方法:通过宏绑定控件(控件类型和名称必须和蓝图添加的一致,并且在蓝图中添加同名同类型的控件)

步骤1:在C++中创建指针

复制代码
	//第二种方法		这两个标记必须要添加!!!
	UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
		class UButton* TestButton2;

步骤2:在蓝图中创建对象,名字为C++中的变量名。(相当于在C++中声明,在蓝图中进行定义)

相关推荐
空堂与归几秒前
GPT-6.1 Sol 来了:1/5 价逼近 Astra 级
开发语言·人工智能·gpt·ai
程序员老陆1 分钟前
C++ 悬空指针:从原理到工程级解决方案
开发语言·c++·程序设计
释厄62310 分钟前
BSD 简单真理循环论——简单真理 × 复杂循环=大一统
android·开发语言·kotlin
CS创新实验室15 分钟前
Python 的鸭子类型
开发语言·windows·python
漂流瓶jz15 分钟前
UVA-1610 聚会游戏 题解答案代码 算法竞赛入门经典第二版
数据结构·c++·算法·题解·aoapc·算法竞赛入门经典·uva
随意起个昵称23 分钟前
【线性DP】P10156 [LSOT-2] 胜者组
c++·动态规划
1024奇点25 分钟前
【仓颉语言入门 · 第24课】
开发语言·ide·开源
栈溢出了29 分钟前
VS Code Python 自动导包失效排查笔记
开发语言·笔记·python
无名猿30 分钟前
map / set 完全指南:红黑树与有序容器
数据结构·c++·性能优化·stl·标准库
朝朝辞暮i36 分钟前
C++ 第 28 课:Lambda 表达式
开发语言·c++·算法