Creating a submenu allows you to group multiple related actions under a single menu heading, organizing the user interface more effectively.
Implementation using RegisterMenus:
// MyModule.cpp
void MyModule::RegisterMenus()
{
FToolMenuOwnerScoped OwnerScoped(this);
UToolMenu* Menu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu.Tools");
FToolMenuSection& Section = Menu->AddSection("MyModuleSubmenu", LOCTEXT("MySubmenu", "My Module Submenu"));
// Creating a submenu
Section.AddSubMenu(
"MySubmenu",
LOCTEXT("MySubmenuLabel", "My Submenu"),
LOCTEXT("MySubmenuTooltip", "Explore actions available in My Module"),
FNewToolMenuDelegate::CreateRaw(this, &MyModule::FillMySubmenu),
false,
FSlateIcon(FMyModuleStyle::GetStyleSetName(), "MySubmenuIcon")
);
}
void MyModule::FillMySubmenu(UToolMenu* Submenu)
{
Submenu->AddMenuEntry(
MyModuleCommands::Get().OpenPluginWindow,
LOCTEXT("OpenWindowLabel", "Open Window"),
LOCTEXT("OpenWindowTooltip", "Open the main window of My Module."),
FSlateIcon(FMyModuleStyle::GetStyleSetName(), "OpenWindowIcon")
);
// Additional commands can be added here
}