UE笔记---绑定代理事件
来源:互联网 发布:董小飒淘宝零食店 编辑:程序博客网 时间:2024/05/16 12:32
一、UUserWidget子类中绑定 SWidget 代理事件
代码示例:两种方法都可以
宏展开
#define BIND_UOBJECT_DELEGATE(Type, Function) \
Type::CreateUObject( this, &ThisClass::Function )
void UUMGContentBrowser::ConstructCategoryTree(){TSharedPtr<SScrollBox> LevelScrollBoxTree = StaticCastSharedPtr<SScrollBox>(ScrollBox_Level->GetCachedWidget());TSharedPtr<SCategoryButton> NewEntry =SNew(SCategoryButton).Text(FText::FromString(TEXT("全部"))).CategoryTreeLevel(ECategoryTreeLevel::CTL_ALL).Level1Index(-1).Level2Index(-1)//.OnCategoryTreeClicked(BIND_UOBJECT_DELEGATE(FOnCategoryTreeClickedDelegate, Callback_OnCategoryTreeClicked));.OnCategoryTreeClicked(FOnCategoryTreeClickedDelegate::CreateUObject(this, &UUMGContentBrowser::Callback_OnCategoryTreeClicked));LevelScrollBoxTree->AddSlot().Padding(FMargin(0, 5, 0, 0))[NewEntry.ToSharedRef()];}
二、SLate子类中绑定代理事件
代码示例:来自于UE SEditorTutorials.cpp 类
绑定的方法都是 SWidget 子类中的方法
OnBackClicked(FSimpleDelegate::CreateSP(this, &SEditorTutorials::HandleBackClicked))
void SEditorTutorials::RebuildCurrentContent(){UEditorTutorial* CurrentTutorial = OnGetCurrentTutorial.Execute();int32 CurrentTutorialStage = OnGetCurrentTutorialStage.Execute();OverlayContent = nullptr;ContentBox->ClearChildren();if(CurrentTutorial != nullptr && CurrentTutorialStage < CurrentTutorial->Stages.Num()){ContentBox->AddSlot()[SAssignNew(OverlayContent, STutorialOverlay, CurrentTutorial, &CurrentTutorial->Stages[CurrentTutorialStage]).OnClosed(FSimpleDelegate::CreateSP(this, &SEditorTutorials::HandleCloseClicked)).IsStandalone(CurrentTutorial->bIsStandalone).ParentWindow(ParentWindow).AllowNonWidgetContent(bIsNavigationWindow).OnBackClicked(FSimpleDelegate::CreateSP(this, &SEditorTutorials::HandleBackClicked)).OnHomeClicked(FSimpleDelegate::CreateSP(this, &SEditorTutorials::HandleHomeClicked)).OnNextClicked(FSimpleDelegate::CreateSP(this, &SEditorTutorials::HandleNextClicked)).IsBackEnabled(this, &SEditorTutorials::IsBackButtonEnabled).IsHomeEnabled(this, &SEditorTutorials::IsHomeButtonEnabled).IsNextEnabled(this, &SEditorTutorials::IsNextButtonEnabled).OnWidgetWasDrawn(OnWidgetWasDrawn).OnWasWidgetDrawn(OnWasWidgetDrawn)];}else{// create 'empty' overlay, as we may need this for picking visualizationContentBox->AddSlot()[SAssignNew(OverlayContent, STutorialOverlay, nullptr, nullptr).OnClosed(FSimpleDelegate::CreateSP(this, &SEditorTutorials::HandleCloseClicked)).IsStandalone(false).ParentWindow(ParentWindow).AllowNonWidgetContent(false)];}}
三、自定义方法中绑定事件
方法参数为代理事件 FOnCheckStateChanged
// Checkvoid AddCheckBoxBlock(const FString& InBlockID, EWidgetType::Type InType, const FText& InText, const FOnCheckStateChanged& InOnCheckStateChanged = FOnCheckStateChanged()){TSharedRef< FDetailEntryBlock > EntryBlock(new FDetailEntryBlock());EntryBlock->BlockID = InBlockID;EntryBlock->Type = InType;EntryBlock->Text = InText;EntryBlock->OnCheckStateChanged = InOnCheckStateChanged;DetailBuilderList.Add(EntryBlock);}FDetailBuilder DetailBuilder;DetailBuilder.AddCheckBoxBlock(TEXT("Check1"),EWidgetType::WT_TEXTBLOCK_CHECK,FText::FromString(TEXT("开启空间名")),FOnCheckStateChanged::CreateUObject(this, &ATutorialsPlayerController::OnCheckStateChangedEvent1));
阅读全文
0 0
- UE笔记---绑定代理事件
- html页面绑定代理事件
- UE4笔记---Slate控件中的代理事件如何绑定UObject方法
- js事件绑定,事件流,事件代理的一些理解
- 事件绑定,事件冒泡和事件代理详解
- JS学习笔记-事件绑定
- jQuery学习笔记:事件绑定
- JS事件机制:事件绑定、事件监听、事件委托(事件代理)
- UE使用技巧笔记
- UE 常用功能笔记
- UE 编辑器笔记
- UE工具使用笔记
- Jquery使用代理的方式绑定控件事件
- 【新人笔记16.04.05】JS--事件绑定
- Android学习笔记--控件事件绑定方式
- UEeditor修改绑定内容
- jquery笔记(六):事件代理(委托)
- JavaScript一个通用于代理和不代理的绑定事件函数
- 解密中企动力:80余家公司近万人个个都干营销 不骗你
- 关于模态框的那些事 angularjs
- POJ 1751 Highways
- SwitchButton 开关按钮
- CF19E Fairy
- UE笔记---绑定代理事件
- 忍者游戏
- Crosses and Crosses POJ 3537
- Intellij IDEA快捷键大全汇总(二)
- TLS 握手优化详解
- Mysql主从配置,实现读写分离(转载)
- 算法导论 最大流 FordFulkson
- iframe跳转
- 静态代理和动态代理