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++中声明,在蓝图中进行定义)

相关推荐
2501_9445215914 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理14 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
青瓦梦滋14 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
wangchunyu11415 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
程序 代码狂人16 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
meiying883818 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界18 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper18 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
学逆向的19 小时前
C 指针常量与常量指针
c语言·开发语言·网络安全
低调滴开发19 小时前
3 行代码写崩一个函数?切片才是 Rust 字符串处理的正确姿势
开发语言·后端·rust