【问题标题】:Click function on Toggle Buttons in Unreal Engine 4 C++虚幻引擎 4 C++ 中切换按钮的单击功能
【发布时间】:2020-07-04 12:31:17
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ user-interface unreal-engine4 unreal-umg


    【解决方案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) {}
    

    我解决这些问题的典型方法是简单地在 Visual Studio 中搜索代理 CTRL+SHIFT+F 以查找它的其他示例。

    【讨论】:

    • 很好,这听起来和我想要的完全一样。我希望有一种方法可以绑定回调函数,而无需创建新的基于 UCheckBox 的类(就像我不需要修改 UButton 来将 OnClick 函数绑定到它们一样)。非常感谢您的回答! :)
    • 很高兴我能帮上忙 :)
    猜你喜欢
    • 2015-10-12
    • 2015-08-01
    • 2015-01-13
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2020-07-24
    • 2015-02-04
    • 2019-12-09
    相关资源
    最近更新 更多