0

我对 CheckBoxes 和 click 事件有疑问。我有一些按钮可以执行 OnClick 函数,在代码上是这样的:

SomeButton->OnClicked.AddDynamic(this, &ClassName::FunctionToExecute);

出于风格原因,我认为我应该使用通过 CheckBox 实现的切换按钮,而不是常规按钮。但是,我无法找到将函数绑定到每次点击的正确方法。到目前为止,我尝试过这样的事情,但它不起作用。我也尝试过声明一个委托,但它也不起作用。

SomeCheckBox->OnCheckStateChanged.Add(&ClassName::FunctionToExecute);

将函数绑定到 OnCheckStateChanged() 事件的正确方法是什么?提前非常感谢 :smile:

4

1 回答 1

1

如果您使用的是 UMG 复选框(听起来像您),那么我们可以查看委托声明:

// In Checkbox.h 
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam( FOnCheckBoxComponentStateChanged, bool, bIsChecked );

注意我们的回调函数需要一个bool输入参数。

这意味着我们的回调函数必须如下所示:

void UYourWidget::OnCheckboxChanged(bool bIsChecked) {}

然后,您可以像这样绑定您的小部件:

if(CheckBox)
{
    CheckBox->OnCheckStateChanged.AddDynamic(this, &UTextChatWidget::Test);
}

如果您使用的是 slate 复选框,则回调函数声明有点不同。它使用 ECheckBoxState 枚举而不是布尔值。

SNew(SCheckBox)
   .OnCheckStateChanged(this, &SFoo::OnStateChanged)

void SFoo::OnStateChanged(ECheckBoxState NewState) {}

我找出这些东西的典型方法是简单地CTRL+SHIFT+F在 Visual Studio 中搜索委托以找到它的其他示例。

于 2020-07-04T21:04:01.607 回答