YSTest: YSLib::UI::TabControl类 参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

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

标签容器控件。 更多...

`#include <TabControl.h>`

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

## Public 类型

using | iterator = ystdex::subscriptive_iterator< TabControl, IWidget >

## Public 成员函数

| TabControl (const Rect &={})
| DefDeMoveCtor (TabControl)~TabControl() override
| 虚析构：类定义外默认实现。 更多...
| DefWidgetMemberIterationOperations (iterator) PDefHOp(IWidget &
size_t idx ynoexcept | ImplRet (YAssertNonnull(idx==0||p_page),*ystdex::forward_as_array< observer_ptr< IWidget >>(make_observer(p_bar.get()), p_page).begin()[idx]) void operator+
| 添加部件并隐藏。 更多...
| DefGetter (const ynothrow, size_t, ChildrenCount, p_page?2:1) Rect GetPageBounds() const ynothrow
| 取页面边界。 更多...
| DefGetter (const ynothrow, TabBar &, TabBarRef, Deref(p_bar)) DefGetter(const ynothrow
| 取标签数。 更多...
| GetTabBarRef ().GetCount()) DefGetter(const ynothrow
const vector< observer_ptr< Panel > > tab_pages void | Attach (Control &)
| 附加：添加 TouchDown 事件处理器。 更多...
size_t | Find (IWidget &) const
| 查找页面部件。 更多...
bool | SwitchTab (Control &)
| 按标签切换页面。 更多...
void | UpdateTabPages ()
| 更新标签页状态。 更多...
bool | SwitchPage (size_t)
| 切换页面。 更多...
bool | SwitchPage (Control &)
Public 成员函数 继承自 YSLib::UI::Widget
| Widget (const Rect &={})
| Widget (const Rect &, HBrush)
template<typename _tView , typename _tRenderer , typename _tController >
| Widget (_tView &&pView_=make_unique< View >(), _tRenderer &&pRenderer_=make_unique< Renderer >(), _tController &&pController_={})
| 构造：使用视图指针、渲染器指针和控制器指针，无背景。 更多...
| Widget (const Widget &)
| 复制构造：除容器指针为空外深复制。 更多...
| DefDelMoveCtor (Widget) virtual ~Widget()
| since build 428 更多...
| DefGetter (ImplI(IWidget), WidgetRange, Children, WidgetRange()) static HBrush MakeBlankBrush()
| 取空白画刷。 更多...
| DefGetter (const ImplI(IWidget), AController &, Controller, Deref(controller_ptr)) DefGetterMem(const ynothrow
| GetView ()) DefGetter(const ImplI(IWidget)
Renderer | Deref (renderer_ptr)) DefGetter(const ImplI(IWidget)
Renderer AView | Deref (view_ptr)) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) void SetRenderer(unique_ptr< Renderer >)
| 设置渲染器为指定指针指向的对象，同时更新渲染器状态。 更多...
void | SetView (unique_ptr< AView >)
| 设置视图为指定指针指向的对象。 更多...
virtual void | Refresh (PaintEventArgs &&)
| 刷新：按指定参数绘制界面并更新状态。 更多...

## Public 属性

SDst | BarHeight = 24
| 标签栏初始高。 更多...
| size_t
| TabCount
const vector< observer_ptr< Panel > > | Pages
Public 属性 继承自 YSLib::UI::Widget
HBrush | Background
| 背景。 更多...
| SDst
| Height
Renderer | Renderer
Renderer AView | View
Renderer AView | SDst
Renderer AView | Width
Renderer AView | SPos
Renderer AView | X
Renderer AView | Y
Renderer AView | Height

## Private 属性

unique_ptr< TabBar > | p_bar
| 标签栏。 更多...
observer_ptr< Panel > | p_page {}
vector< observer_ptr< Panel > > | tab_pages {}

## 额外继承的成员函数

Protected 成员函数 继承自 YSLib::UI::Control
| Control (const Rect &, HBrush)
| 构造：使用指定边界和背景画刷。 更多...
| Control (const Control &)
| 复制构造：除容器为空外深复制。 更多...
| DefDeMoveCtor (Control)~Control() override
| 虚析构：类定义外默认实现。 更多...
virtual | PDefH (observer_ptr< IWidget >, GetBoundControlPtr, const KeyInput &) ImplRet(nullptr) void OnTouch_Close(CursorEventArgs &&)
| 取按键-指针设备输入默认事件组映射。 更多...
相关函数 继承自 YSLib::UI::Widget
template<class... _tWidgets>
void | InvalidateWidgets (_tWidgets &...wgts)
| 向无效化部件。 更多...
template<class _tRenderer >
_tRenderer & | WrapRenderer (Widget &wgt, unique_ptr< _tRenderer > p_renderer)
| 包装渲染器：设置渲染器并返回被设置的渲染器引用。 更多...

## 详细描述

标签容器控件。

自从
  build 494

在文件 TabControl.h 第 112 行定义.

## 成员类型定义说明

using YSLib::UI::TabControl::iterator = ystdex::subscriptive_iterator<TabControl, IWidget>

在文件 TabControl.h 第 115 行定义.

## 构造及析构函数说明

YSLib::UI::TabControl::TabControl | ( | const Rect & | r = `{}` | ) |

explicit

在文件 TabControl.cpp 第 128 行定义.

## 成员函数说明

void YSLib::UI::TabControl::Attach | ( | Control & | ctl | ) |

附加：添加 TouchDown 事件处理器。

在文件 TabControl.cpp 第 143 行定义.

参考 YSLib::UI::Invalidate() , 以及 SwitchTab().

函数调用图:

YSLib::UI::TabControl::DefDeMoveCtor | ( | TabControl |  | ) |

override

虚析构：类定义外默认实现。

自从
  build 586

YSLib::UI::TabControl::DefGetter | ( | const ynothrow | ,
|  | size_t | ,
|  | ChildrenCount | ,
|  | p_page?2:1 |
| ) |  | const

取页面边界。

YSLib::UI::TabControl::DefGetter | ( | const ynothrow | ,
|  | TabBar & | ,
|  | TabBarRef | ,
|  | Deref(p_bar) |
| ) |  | const

取标签数。

自从
  build 495
  build 495

YSLib::UI::TabControl::DefWidgetMemberIterationOperations | ( | iterator |  | ) |

size_t YSLib::UI::TabControl::Find | ( | IWidget & | wgt | ) | const

查找页面部件。

返回
  若找到则为页面部件的索引，否则等于页面数。

自从
  build 495

在文件 TabControl.cpp 第 162 行定义.

参考 ystdex::make_observer(), size_t , 以及 tab_pages.

参考自 SwitchPage() , 以及 SwitchTab().

函数调用图:

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

YSLib::UI::TabControl::GetTabBarRef | ( |  | ) | const

自从
  build 672

参考自 SwitchTab() , 以及 UpdateTabPages().

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

size_t idx ynoexcept YSLib::UI::TabControl::ImplRet | ( | YAssertNonnull(idx==0||p_page) | ,
|  | *ystdex::forward_as_array< observer_ptr< IWidget >> | (make_observer(p_bar.get()), p_page).begin()[idx]
| ) |  |

添加部件并隐藏。

前置条件
  参数对应的部件的动态类型是 Panel 或其派生类。

异常

  std::bad_cast | 参数不能 dynamic_cast 为 Panel& 。

bool YSLib::UI::TabControl::SwitchPage | ( | size_t | idx | ) |

切换页面。

返回
  是否切换成功。

注解
  设置页面选择、页面大小和状态；若参数指定的页面不存在或标签无效则忽略。

在文件 TabControl.cpp 第 177 行定义.

参考 CHRLib::p() , 以及 tab_pages.

参考自 SwitchTab().

函数调用图:

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

bool YSLib::UI::TabControl::SwitchPage | ( | Control & | ctl | ) |

前置条件
  断言：控件属于标签。

在文件 TabControl.cpp 第 187 行定义.

参考 YSLib::UI::Widget::Deref(), Find(), YSLib::i, p_bar, p_page, YSLib::UI::SetBoundsOf(), tab_pages , 以及 YSLib::YAssert().

函数调用图:

bool YSLib::UI::TabControl::SwitchTab | ( | Control & | ctl | ) |

按标签切换页面。

自从
  build 495

在文件 TabControl.cpp 第 169 行定义.

参考 Find(), GetTabBarRef() , 以及 SwitchPage().

参考自 Attach().

函数调用图:

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

void YSLib::UI::TabControl::UpdateTabPages | ( |  | ) |

更新标签页状态。

参见
  UpdatePageLayout

自从
  build 495

调整标签栏布局；选中第一个存在对应页面的标签； 若存在选中页面则设置可视状态并调整大小；最后无效化。

在文件 TabControl.cpp 第 206 行定义.

参考 GetTabBarRef(), YSLib::i, YSLib::UI::Invalidate(), p_page, YSLib::UI::SetBoundsOf(), tab_pages , 以及 yunseq.

函数调用图:

## 类成员变量说明

SDst YSLib::UI::TabControl::BarHeight = 24

标签栏初始高。

在文件 TabControl.h 第 118 行定义.

unique_ptr<TabBar> YSLib::UI::TabControl::p_bar

private

标签栏。

不变性
  `bool(p_bar)` 。

在文件 TabControl.h 第 125 行定义.

参考自 SwitchPage().

observer_ptr<Panel> YSLib::UI::TabControl::p_page {}

private

自从
  build 672

在文件 TabControl.h 第 127 行定义.

参考自 SwitchPage() , 以及 UpdateTabPages().

const vector<observer_ptr<Panel> > YSLib::UI::TabControl::Pages

在文件 TabControl.h 第 168 行定义.

YSLib::UI::TabControl::size_t

在文件 TabControl.h 第 166 行定义.

参考自 Find().

vector<observer_ptr<Panel> > YSLib::UI::TabControl::tab_pages {}

private

自从
  build 672

在文件 TabControl.h 第 129 行定义.

参考自 Find(), SwitchPage() , 以及 UpdateTabPages().

YSLib::UI::TabControl::TabCount

在文件 TabControl.h 第 166 行定义.

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

- TabControl.h
- TabControl.cpp