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

相关推荐
liulilittle26 分钟前
CPU亲和性深度实践:从基础原理到Intel大小核架构优化
c++·线程·进程·cpu·量化·高频·亲核性
曲鸟27 分钟前
用Python和MediaPipe实现实时手指识别
开发语言·python
weixin_3077791340 分钟前
破解遗留数据集成难题:基于AWS Glue的无服务器ETL实践
开发语言·云原生·云计算·etl·aws
毕设源码-钟学长1 小时前
【开题答辩全过程】以 基于Java的相机专卖网的设计与实现为例,包含答辩的问题和答案
java·开发语言
Albert Edison1 小时前
【项目设计】基于正倒排索引的Boost搜索引擎
linux·网络·c++·后端·http·搜索引擎
简单点好不好1 小时前
大恒相机-mono12-python示例程序
开发语言·python·数码相机
liu****1 小时前
12.线程同步与互斥
linux·数据结构·c++·算法·1024程序员节
后端小张1 小时前
【JAVA 进阶】SpringAI人工智能框架深度解析:从理论到实战的企业级AI应用开发指南
java·开发语言·人工智能
十五年专注C++开发1 小时前
DocxFactory: 一个C++操作word的开源库(不依赖office控件)
c++·开源·word·后端开发
MATLAB代码顾问2 小时前
MATLAB实现CNN(卷积神经网络)图像边缘识别
开发语言·matlab·cnn