ue5 c++ Builder.AddMenuEntry 的添加svg图片的重载
时间: 2024-05-03 18:23:11 浏览: 250
C++构造函数重载
5星 · 资源好评率100%
UE5中Builder.AddMenuEntry的添加svg图片的重载如下所示:
```cpp
FMenuEntryBuilder& AddMenuEntry(
const FText& InLabel,
const FText& InToolTip,
const FSlateIcon& InIcon,
const FUIAction& InAction,
FName InExtensionHook = NAME_None,
EUserInterfaceActionType::Type InUserInterfaceActionType = EUserInterfaceActionType::Button
);
FMenuEntryBuilder& AddMenuEntry(
const FText& InLabel,
const FText& InToolTip,
const FName& InIconResourceName,
const FUIAction& InAction,
FName InExtensionHook = NAME_None,
EUserInterfaceActionType::Type InUserInterfaceActionType = EUserInterfaceActionType::Button
);
```
第二个重载函数中,第三个参数类型为FName,表示要添加的svg图片资源的名称。在使用该函数时,需要先将svg图片资源加载到Slate的图片资源管理器中,可以使用FSlateSvgImage工具类来实现:
```cpp
FSlateSvgImage SvgImage;
bool bSuccess = FSlateSvgImageParser::Parse(FilePath, SvgImage);
if (bSuccess)
{
FSlateImageBrush Brush(SvgImage.GetSlateBrush());
FSlateStyleRegistry::RegisterSlateStyle(FMyStyle::GetStyleSetName(), CreateStyle());
FSlateStyleRegistry::Get().GetBrushSet(FMyStyle::GetStyleSetName())->Set(Brush.GetResourceName(), Brush);
}
```
其中,CreateStyle()函数是用来创建样式的,可以根据需要自行实现。加载完成后,就可以在Builder.AddMenuEntry函数中使用该svg图片资源了:
```cpp
Builder.AddMenuEntry(
FText::FromString(TEXT("My Menu Entry")),
FText::FromString(TEXT("A tooltip for my menu entry")),
FName(TEXT("<MyStyleName>.<BrushName>")),
FUIAction(FExecuteAction::CreateLambda([]() { /* Action to execute when the menu item is clicked */ })),
NAME_None,
EUserInterfaceActionType::Button
);
```
其中,<MyStyleName>是样式的名称,<BrushName>是svg图片资源的名称。
阅读全文