【发布时间】:2019-06-03 06:27:50
【问题描述】:
在虚幻引擎 4 中,我想将一个事件绑定到 UListView::OnItemSelectionChanged。该事件FOnItemSelectionChanged 需要NullableItemType,因此我将一个指向列表视图的列表条目类(我的自定义类派生自IUserObjectListEntry)的指针作为参数传递。
UCLASS()
class PROJECT_API UMyListViewEntry : public UUserWidget, public IUserObjectListEntry
{
GENERATED_BODY()
// Members and functions don't matter here.
};
UCLASS()
class PROJECT_API UMyUserWidget : public UUserWidget
{
GENERATED_BODY()
void NativeConstruct() final
{
MyList->OnItemSelectionChanged.AddDynamic(this, &UMyUserWidget::MyEventCallback);
}
void MyEventCallback(UMyListViewEntry* e)
{
// implementation details
}
private:
UPROPERTY(meta = (BindWidget))
UListView* MyList;
};
但是,AddDynamic() 调用会导致错误
C2228:“.__Internal_AddDynamic”的左侧必须在类/结构/联合中
所以我想,我要绑定的回调函数的签名(MyEventCallback())是错误的。
应该绑定到UListView::OnItemSelectionChanged 的函数的正确签名是什么?
【问题讨论】:
-
想必
OnItemSelectionChanged其实是某种getter,能不能像MyList->OnItemSelectionChanged().AddDynamic(...这么简单? -
@George 是的,你是对的。我现在有三种不同的工作方法(其中一种使用那个事件获取器)。我想我会在有时间的时候添加一个答案。
标签: c++ delegates unreal-engine4