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

相关推荐
BadBadBad__AK24 分钟前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境12 小时前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境13 小时前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴1 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境3 天前
C++ 的Eigen 库全解析
c++
卷无止境3 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴4 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18005 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴6 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨6 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++