奇怪的是,ue4只有多选框,原来合并了。
.Style(FCoreStyle::Get(), "RadioButton")
不多说了,放代码
先枚举几个 enum ERadioChoice { Radio0, Radio1, Radio2, };
+ SHorizontalBox::Slot() .AutoWidth() [ CreateRadioButton(LOCTEXT("SRadioButtonItemLabel01", "左"), Radio0) ]
+ SHorizontalBox::Slot() .AutoWidth() [ CreateRadioButton(LOCTEXT("SRadioButtonItemLabel02", "中"), Radio1) ]
+ SHorizontalBox::Slot() .AutoWidth() [ CreateRadioButton(LOCTEXT("SRadioButtonItemLabel03", "右"), Radio2) ]
TSharedRef<SWidget> CreateRadioButton(const FText& RadioText, ERadioChoice RadioButtonChoice) { return SNew(SCheckBox) .Style(FCoreStyle::Get(), "RadioButton") .IsChecked(this, &SProjectInfo_cabinetUnion::HandleRadioButtonIsChecked, RadioButtonChoice) .OnCheckStateChanged(this, &SProjectInfo_cabinetUnion::HandleRadioButtonCheckStateChanged, RadioButtonChoice) [ SNew(STextBlock) .Text(RadioText) ]; } // Callback for determining whether a radio button is checked. ECheckBoxState HandleRadioButtonIsChecked(ERadioChoice ButtonId) const { return (_radioChoice == ButtonId) ? ECheckBoxState::Checked : ECheckBoxState::Unchecked; } // Callback for checking a radio button. void HandleRadioButtonCheckStateChanged(ECheckBoxState NewRadioState, ERadioChoice RadioThatChanged) { if (NewRadioState == ECheckBoxState::Checked) { _radioChoice = RadioThatChanged; } }
// 单选选项 ERadioChoice _radioChoice;