-
在控件蓝图中添加容器,注意命名不要有中文

-
C++代码中找到容器实例
|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 |UVerticalBox* verticalBox = Cast<UVerticalBox>(CurrentWidget->GetWidgetFromName(TEXT(``"VerticalBox_0"``)));if(verticalBox != nullptr){``UScrollBox* ScrollBox = Cast<UScrollBox>(CurrentWidget->GetWidgetFromName(TEXT(``"ScrollBox_0"``)));}else{``UE_LOG(LogTemp, Warning, TEXT(``"verticalBox is not find"``));}| -
创建Button实例,设置标题,绑定点击事件
|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |UVRVIUButton* Button = NewObject<UVRVIUButton>(``this``);UTextBlock* ButtonText = NewObject<UTextBlock>(``this``);ButtonText->SetJustification(ETextJustify::Left);ButtonText->SetColorAndOpacity(FSlateColor(FLinearColor::Black));ScrollBox->AddChild(Button);UPanelSlot* Slot = Button->Slot;if(Slot){``UCanvasPanelSlot* ButtonSlot = Cast<UCanvasPanelSlot>(Slot);``if(ButtonSlot) {``ButtonSlot->SetAutoSize(``true``);``}}//原始Button事件绑定,项目中用到的是自定义Button//Button->OnClicked.AddDynamic(this, &ALandMasterGameMode::OnButtonClicked1);//Button->OnClicked.AddDynamic(Button, &UVRVIUButton::HandleButtonClicked);Button->OnVRVIUButtonClicked.AddDynamic(``this``, &ALandMasterGameMode::OnButtonClicked);FString btnText = FString::Printf(TEXT(``"%s-%s"``), *itemHolder->name, *itemHolder->intranet_ip);ButtonText->SetText(FText::FromString(btnText));Button->AddChild(ButtonText);Button->ButtonID = itemHolder->room_id;Button->AdditionalParameter = itemHolder->intranet_ip;UButtonSlot* ButtonSlot = Cast<UButtonSlot>(ButtonText->Slot);if(ButtonSlot) {``ButtonSlot->SetPadding(FMargin(0.f, ButtonSlot->Padding.Top,0.f, ButtonSlot->Padding.Bottom));}| -
创建点击事件
|----------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |voidALandMasterGameMode::OnButtonClicked(int32 ButtonID, FString AdditionalParameterr) {``UE_LOG(LogTemp, Warning, TEXT(``"On Button Clicked roomId is %d, ipAdress is %s"``), ButtonID, *AdditionalParameterr);``this``->IntranetIP = AdditionalParameterr;``if(nullptr != CurrentWidget)``{``//通过代码调用Button点击事件``UButton* btn = Cast<UButton>(CurrentWidget->GetWidgetFromName(TEXT(``"ConnectButton"``)));``if(btn != nullptr)``{``btn->OnClicked.Broadcast();``}``else{``UE_LOG(LogTemp, Warning, TEXT(``"verticalBox is not find"``));``}``}}|
Unreal Engine动态添加Button实例
ChatGPT攻城狮2024-05-01 23:09
相关推荐
王老师青少年编程24 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【贪心与二分判定】:数列分段 Section IIzh_xuan26 分钟前
libcurl调用https接口就叫飞六吧28 分钟前
QT写一个桌面程序exe并动态打包基本流程(c++)蜡笔小马29 分钟前
1.c++设计模式-工厂模式汉克老师1 小时前
GESP2025年3月认证C++五级( 第三部分编程题(2、原根判断))winner88811 小时前
从零吃透C++命名空间、std、#include、string、vectorAI进化营-智能译站2 小时前
ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战winner88812 小时前
C++ 命名空间、虚函数、抽象类、protected 权限全套通俗易懂精讲(附与 Java 对比)不会编程的懒洋洋2 小时前
C# P/Invoke 基础24白菜头2 小时前
【无标题】