ue5 c++ FMenuBuilder.AddMenuEntry 如何为生成的按钮添加svg图片
时间: 2024-05-10 08:20:00 浏览: 242
要为生成的按钮添加SVG图片,可以使用FMenuBuilder.AddSubMenu()方法。该方法接受一个FMenuBuilder对象作为参数,并且可以添加一个子菜单项。使用子菜单项可以添加一个包含SVG图像的按钮。
以下是一个示例代码,演示如何使用FMenuBuilder.AddSubMenu()方法添加一个包含SVG图像的按钮:
```c++
FSlateIcon Icon = FSlateIcon(FEditorStyle::GetStyleSetName(), "MyIconName.Icon");
FMenuBuilder MenuBuilder(true, NULL);
MenuBuilder.BeginSection("MySection");
{
FUIAction Action;
Action.ExecuteAction.BindRaw(this, &MyClass::MyButtonClicked);
MenuBuilder.AddSubMenu(
FText::FromString("MyButtonLabel"),
FText::FromString("MyButtonTooltip"),
FNewMenuDelegate::CreateRaw(this, &MyClass::MySubMenuBuilder),
Icon,
false,
FSlateFontInfo(FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf"), 12)
);
}
MenuBuilder.EndSection();
```
在上面的代码中,FSlateIcon对象被创建并传递给FMenuBuilder.AddSubMenu()方法的第四个参数。该对象包含要显示的SVG图像的名称。
要使用自己的SVG文件,请将文件添加到项目中,并将其路径传递给FSlateIcon构造函数中的第一个参数。例如:
```c++
FSlateIcon Icon = FSlateIcon(FPaths::ProjectContentDir() / "MyFolder/MyIcon.svg");
```
注意,要使用SVG图像,需要在项目的.build.cs文件中包含SlateSVG模块。例如:
```c++
PublicDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Engine",
"InputCore",
"Slate",
"SlateCore",
"SlateSVG"
}
);
```
阅读全文