YSTest: YSLib::UI::MenuHost类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 成员函数 | Public 属性 | Private 成员函数 | Private 属性 | 所有成员列表
YSLib::UI::MenuHost类 参考

菜单宿主。 更多...

`#include <Menu.h>`

类 YSLib::UI::MenuHost 继承关系图:
[图例]
YSLib::UI::MenuHost 的协作图:
[图例]

## Public 成员函数

| DefDeCtor (MenuHost) void operator+
| 向菜单组添加菜单并隐藏。 更多...
bool | operator-= (Menu &)
| 从菜单组移除指定的菜单。 更多...
YB_ATTR_nodiscard YB_PURE bool | IsShowing (Menu &) const
| 判断窗口中是否正在显示指定的菜单。 更多...
void | ShowAll ()
| 显示菜单组中的所有菜单。 更多...
void | Hide (Menu &)
| 隐藏菜单组中指定的菜单。 更多...
void | HideAll ()
| 隐藏菜单组中的所有菜单。 更多...
void | HideUnrelated (Menu &mnu, Menu &mnuParent)
| 隐藏从 mnu 起向上层遍历菜单树的过程中不相关的菜单。 更多...

## Public 属性

map< lref< IWidget >, observer_ptr< Menu >, ystdex::get_less<> > | Roots {}
| 根菜单关联映射。 更多...
YB_ATTR_nodiscard YB_PURE PDefH(bool, Contains, Menu &mnu) const ImplRet(ystdex void | Show (Menu &)
| 判断菜单组中是否存在指定的菜单。 更多...

## Private 成员函数

void | ShowRaw (Menu &mnu)
| 显示指定菜单 mnu 。 更多...
void | HideRaw (Menu &mnu)
| 隐藏指定菜单 mnu。 更多...
Private 成员函数 继承自 ystdex::bases::noncopyable
| noncopyable (const noncopyable &)=delete
| 禁止复制构造。 更多...
| noncopyable (noncopyable &&)=default
| 允许转移构造。 更多...
noncopyable & | operator= (const noncopyable &)=delete
| 禁止复制赋值。 更多...
noncopyable & | operator= (noncopyable &&)=default
| 允许转移赋值。 更多...
| noncopyable ()=default
| `protected` 构造：默认实现。 更多...
| ~noncopyable ()=default
| `protected` 析构：默认实现。 更多...

## Private 属性

set< lref< Menu >, ystdex::get_less<> > | menus {}

## 详细描述

菜单宿主。

警告
  非虚析构。

自从
  build 252

在文件 Menu.h 第 199 行定义.

## 成员函数说明

## ◆ DefDeCtor()

YSLib::UI::MenuHost::DefDeCtor | ( | MenuHost |  | ) |

向菜单组添加菜单并隐藏。

自从
  build 574

注解
  标识由菜单对象的菜单标识成员指定；若菜单项已存在则覆盖旧菜单项。

## ◆ Hide()

void YSLib::UI::MenuHost::Hide | ( | Menu & | mnu | ) |

隐藏菜单组中指定的菜单。

自从
  build 537

在文件 Menu.cpp 第 331 行定义.

引用了 HideRaw().

被这些函数引用 HideUnrelated().

函数调用图:
这是这个函数的调用关系图:

## ◆ HideAll()

void YSLib::UI::MenuHost::HideAll | ( |  | ) |

隐藏菜单组中的所有菜单。

在文件 Menu.cpp 第 338 行定义.

引用了 menus.

被这些函数引用 HideUnrelated().

这是这个函数的调用关系图:

## ◆ HideRaw()

void YSLib::UI::MenuHost::HideRaw | ( | Menu & | mnu | ) |

private

隐藏指定菜单 mnu。

前置条件
  断言： Contains(mnu) 。

在文件 Menu.cpp 第 346 行定义.

引用了 YSLib::UI::Hide(), YSLib::UI::Invalidate(), YSLib::UI::IsVisible , 以及 YSLib::YAssert().

被这些函数引用 Hide().

函数调用图:
这是这个函数的调用关系图:

## ◆ HideUnrelated()

void YSLib::UI::MenuHost::HideUnrelated | ( | Menu & | mnu,
|  | Menu & | mnuParent
| ) |  |

隐藏从 mnu 起向上层遍历菜单树的过程中不相关的菜单。

注解
  相关菜单指 mnu 的父菜单中的 mnuParent 及其直接或间接父菜单。
  若 `!Contains(mnuParent)` 或 mnuParent 不是 mnu 的直接或间接父菜单，则隐藏所有菜单。

在文件 Menu.cpp 第 359 行定义.

引用了 Hide(), HideAll() , 以及 ystdex::make_observer().

函数调用图:

## ◆ IsShowing()

bool YSLib::UI::MenuHost::IsShowing | ( | Menu & | mnu | ) | const

判断窗口中是否正在显示指定的菜单。

自从
  build 537

在文件 Menu.cpp 第 296 行定义.

引用了 YSLib::UI::IsVisible.

被这些函数引用 YReader::ShlTextReader::OnKeyDown() , 以及 YReader::ShlTextReader::ShowMenu().

这是这个函数的调用关系图:

## ◆ operator-=()

bool YSLib::UI::MenuHost::operator-= | ( | Menu & | mnu | ) |

从菜单组移除指定的菜单。

注解
  同时置菜单宿主指针为空。

自从
  build 537

在文件 Menu.cpp 第 285 行定义.

引用了 menus , 以及 YSLib::UI::Menu::pHost.

## ◆ ShowAll()

void YSLib::UI::MenuHost::ShowAll | ( |  | ) |

显示菜单组中的所有菜单。

自从
  build 574

在文件 Menu.cpp 第 315 行定义.

引用了 menus , 以及 YSLib::UI::wgt.

## ◆ ShowRaw()

void YSLib::UI::MenuHost::ShowRaw | ( | Menu & | mnu | ) |

private

显示指定菜单 mnu 。

前置条件
  断言： Contains(mnu) 。

自从
  build 574

在文件 Menu.cpp 第 323 行定义.

引用了 YSLib::UI::Show() , 以及 YSLib::YAssert().

函数调用图:

## 类成员变量说明

## ◆ menus

set<lref<Menu>, ystdex::get_less<> > YSLib::UI::MenuHost::menus {}

private

自从
  build 830

在文件 Menu.h 第 203 行定义.

被这些函数引用 HideAll(), operator-=() , 以及 ShowAll().

## ◆ Roots

map<lref<IWidget>, observer_ptr<Menu>, ystdex::get_less<> > YSLib::UI::MenuHost::Roots {}

根菜单关联映射。

自从
  build 830

指定向指定部件转移焦点时不进行隐藏的菜单的映射。

在文件 Menu.h 第 212 行定义.

## ◆ Show

void YSLib::UI::MenuHost::Show

判断菜单组中是否存在指定的菜单。

自从
  build 531

清除菜单组。

注解
  释放所有的菜单对象。

显示菜单组中指定的菜单。

注解
  若不在菜单组中则忽略。

自从
  build 574

在文件 Menu.h 第 259 行定义.

被这些函数引用 YSLib::UI::BindTopLevelPopupMenu() , 以及 YReader::ShlTextReader::ShowMenu().

该类的文档由以下文件生成:

- Menu.h
- Menu.cpp