本文内容
菜单
菜单管理系统提供注册和扩展菜单的接口,以便在开放式 3D 引擎 (O3DE) 编辑器用户界面中使用。
注册
新菜单可通过提供其字符串标识符进行注册。
菜单属性结构还可指定其他信息:
- 一个name字符串,它的目的是在用户界面中显示一个人类可读的描述;
AzToolsFramework::MenuProperties menuProperties;
menuProperties.m_name = "Menu Name";
menuManagerInterface->RegisterMenu(
"o3de.menu.identifier",
menuProperties
);
显示菜单
菜单注册后,可以在界面中显示。
// Display a menu at a specific screen position.
menuManagerInternalInterface->DisplayMenuAtScreenPosition("o3de.menu.identifier", screenPosition);
// Display a menu under the cursor.
menuManagerInternalInterface->DisplayMenuUnderCursor("o3de.menu.identifier");
添加动作
可以通过此 API 调用为菜单添加动作:
int sortKey = 100;
menuManagerInterface->AddActionToMenu(
"o3de.menu.identifier",
"o3de.action.identifier",
sortKey
);
有关菜单项排序的更多信息,请参阅 排序键部分。
添加分隔符
要将菜单划分为多个部分,可以添加分隔符。
int sortKey = 100;
menuManagerInterface->AddSeparatorToMenu(
"o3de.menu.identifier",
sortKey
);
有关菜单项排序的更多信息,请参阅 排序键部分。
如果按顺序一个接一个地添加多个分隔符,或者在菜单的开头或结尾添加多个分隔符,它们可能会被折叠为一个或根本不显示(Qt 默认行为)。
添加子菜单
可以通过以下 API 调用将现有菜单添加为子菜单。
int sortKey = 100;
menuManagerInterface->AddSubMenuToMenu(
"o3de.menu.identifier",
"o3de.subMenu.identifier",
sortKey
);
有关菜单项排序的更多信息,请参阅 排序键部分。
请注意,如果用户试图向自己添加菜单,或者如果该动作会导致创建循环依赖关系,从而使编辑器停滞,则函数调用将失败。
添加部件动作
小部件也可以按如下方式添加到菜单中:
int sortKey = 100;
menuManagerInterface->AddWidgetToMenu(
"o3de.menu.identifier",
"o3de.widgetAction.identifier",
sortKey
);
有关菜单项排序的更多信息,请参阅 排序键部分。
菜单栏
可以将主窗口的菜单栏区域注册到菜单管理器,这样就可以通过菜单管理器 API 访问该区域。
// Retrieve an existing Main Window
QMainWindow* mainWindow;
menuManagerInterface->RegisterMenuBar(
"o3de.menuBar.identifier",
mainWindow
);
注册菜单栏后,外部 Gems 可通过字符串标识符向菜单栏添加新菜单。
添加菜单
向菜单栏添加菜单的方法与向菜单添加子菜单的方法相同。
int sortKey = 100;
menuManagerInterface->AddMenuToMenuBar(
"o3de.menuBar.identifier",
"o3de.menu.identifier",
100
);
有关菜单项排序的更多信息,请参阅 排序键部分。