Функция щелчка на кнопках переключения в 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, чтобы найти другие его примеры.