Функция щелчка на кнопках переключения в Unreal Engine 4 C++

У меня есть сомнения по поводу флажков и событий щелчка. У меня есть кнопка, которая выполняет функцию OnClick, что-то вроде этого в коде:

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

По соображениям стиля я подумал, что мне следует использовать кнопку переключения, реализованную с помощью CheckBox, вместо обычной кнопки. Однако мне не удается найти правильный метод привязки функции к каждому щелчку. Пока что пробовал что-то подобное, но не работает. Я также пробовал объявить делегата, но это тоже не сработает.

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

Как правильно привязать функцию к событию OnCheckStateChanged()? Заранее большое спасибо:smile:

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, чтобы найти другие его примеры.

Другие вопросы по тегам