YSTest: YSLib::UI::Widget类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

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

部件。 更多...

`#include <YWidget.h>`

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

## Public 成员函数

| 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 属性

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 成员函数

void | InitializeEvents ()
| 初始化事件组。 更多...

## Private 属性

unique_ptr< AView > | view_ptr
| 部件视图指针。 更多...
unique_ptr< Renderer > | renderer_ptr
| 渲染器指针。 更多...
unique_ptr< AController > | controller_ptr
| 控制器指针。 更多...

## 相关函数

(请注意: 这些不是成员函数.)
template<class _tRenderer >
_tRenderer & | WrapRenderer (Widget &wgt, unique_ptr< _tRenderer > p_renderer)
| 包装渲染器：设置渲染器并返回被设置的渲染器引用。 更多...

## 详细描述

部件。

自从
  早于 build 132

在文件 YWidget.h 第 373 行定义.

## 构造及析构函数说明

## ◆ Widget() [1/4]

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

explicit

自从
  build 384

在文件 YWidget.cpp 第 210 行定义.

## ◆ Widget() [2/4]

YSLib::UI::Widget::Widget | ( | const Rect & | r,
|  | HBrush | b
| ) |  |

explicit

自从
  build 515

在文件 YWidget.cpp 第 216 行定义.

## ◆ Widget() [3/4]

template<typename _tView , typename _tRenderer , typename _tController >

YSLib::UI::Widget::Widget | ( | _tView && | pView_ = `make_unique<View>()`,
|  | _tRenderer && | pRenderer_ = `make_unique<Renderer>()`,
|  | _tController && | pController_ = `{}`
| ) |  |

inlineexplicit

构造：使用视图指针、渲染器指针和控制器指针，无背景。

参数

  pView_ | 视图指针。
  pRenderer_ | 渲染器指针。
  pController_ | 控制器指针。

前置条件
  `bool(pView_) && bool(pRenderer_)` 。

在文件 YWidget.h 第 412 行定义.

## ◆ Widget() [4/4]

YSLib::UI::Widget::Widget | ( | const Widget & | wgt | ) |

复制构造：除容器指针为空外深复制。

在文件 YWidget.cpp 第 223 行定义.

## 成员函数说明

## ◆ DefDelMoveCtor()

YSLib::UI::Widget::DefDelMoveCtor | ( | Widget |  | ) |

since build 428

析构：虚实现。

自动释放焦点后释放部件资源。

注解
  由于不完整类型 WidgetController 的依赖性无法使用 inline 实现。

## ◆ DefGetter() [1/2]

YSLib::UI::Widget::DefGetter | ( | const | ImplIIWidget,
|  | AController & | ,
|  | Controller | ,
|  | Deref(controller_ptr) |
| ) |  | const

## ◆ DefGetter() [2/2]

YSLib::UI::Widget::DefGetter | ( | ImplI(IWidget) | ,
|  | WidgetRange | ,
|  | Children | ,
|  | WidgetRange() |
| ) |  |

取空白画刷。

自从
  build 357

返回
  颜色为 ColorSpace::Black 的 SolidBrush 对象初始化的 HBrush 对象。

注解
  为减少包含头文件，使用非 inline 实现。

参见
  SolidBrush

自从
  build 485

## ◆ Deref() [1/2]

Renderer YSLib::UI::Widget::Deref | ( | renderer_ptr |  | ) | const

自从
  build 569

被这些函数引用 YSLib::UI::TabControl::SwitchPage().

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

## ◆ Deref() [2/2]

Renderer AView YSLib::UI::Widget::Deref | ( | view_ptr |  | ) | const

## ◆ GetView() [1/8]

YSLib::UI::Widget::GetView | ( |  | ) | const

被这些函数引用 YSLib::UI::BindTopLevelPopupMenu(), YSLib::UI::Window::operator-=(), YSLib::UI::CheckButton::Refresh() , 以及 YSLib::UI::RadioButton::Refresh().

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

## ◆ GetView() [2/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) | const

## ◆ GetView() [3/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) | const

## ◆ GetView() [4/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) |

## ◆ GetView() [5/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) |

## ◆ GetView() [6/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) |

自从
  build 587

## ◆ GetView() [7/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) |

自从
  build 587

## ◆ GetView() [8/8]

Renderer AView YSLib::UI::Widget::GetView | ( |  | ) |

设置渲染器为指定指针指向的对象，同时更新渲染器状态。

注解
  若指针为空，则使用以当前部件边界新建的 Renderer 对象。

自从
  build 406

## ◆ InitializeEvents()

void YSLib::UI::Widget::InitializeEvents | ( |  | ) |

private

初始化事件组。

自从
  build 294

在文件 YWidget.cpp 第 236 行定义.

引用了 Background, YSLib::UI::BackgroundPriority(), ystdex::ref() , 以及 Refresh().

函数调用图:

## ◆ Refresh()

void YSLib::UI::Widget::Refresh | ( | PaintEventArgs && | e | ) |

virtual

刷新：按指定参数绘制界面并更新状态。

注解
  默认按 GetChildren() 得到的迭代器范围绘制可见子部件。

参见
  PaintContext

自从
  build 294

由参数指定的信息绘制事件发送者。参数的 ClipArea 成员指定边界。 边界仅为暗示，允许实现忽略，但应保证调用后边界内的区域保持最新显示状态。 绘制结束后更新边界，表示实际被绘制的区域。 若部件的内部状态能够保证显示状态最新，则返回时边界区域可能更小。

被 YSLib::UI::TextList, YSLib::UI::RadioButton, YSLib::UI::DropDownList, YSLib::UI::RadioBox, YSLib::UI::TextBox, YSLib::UI::CheckButton, YSLib::UI::HexViewArea, YSLib::UI::Label, YSLib::UI::CheckBox, YSLib::UI::Button, YSLib::UI::BufferedTextArea, YSLib::UI::Panel, YSLib::UI::TabBar , 以及 YSLib::UI::ProgressBar 重载.

在文件 YWidget.cpp 第 264 行定义.

引用了 YSLib::UI::e , 以及 YSLib::UI::PaintVisibleChildAndCommit().

被这些函数引用 InitializeEvents(), YReader::TextInfoBox::Refresh() , 以及 YSLib::UI::HexViewArea::Refresh().

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

## ◆ SetView()

void YSLib::UI::Widget::SetView | ( | unique_ptr< AView > | p | ) |

设置视图为指定指针指向的对象。

注解
  若指针为空，则使用以当前部件边界新建的 View 对象。
  确保视图后在设置之前首先交换抽象视图的成员。

自从
  build 570

在文件 YWidget.cpp 第 255 行定义.

引用了 YSLib::UI::GetBoundsOf, platform::p, YSLib::swap(), View , 以及 view_ptr.

被这些函数引用 YSLib::GUIHost::GUIHost().

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

## 友元及相关函数文档

## ◆ WrapRenderer()

template<class _tRenderer >

_tRenderer & WrapRenderer | ( | Widget & | wgt,
|  | unique_ptr< _tRenderer > | p_renderer
| ) |  |

related

包装渲染器：设置渲染器并返回被设置的渲染器引用。

前置条件
  间接断言：指针参数非空。

自从
  build 548

在文件 YWidget.h 第 512 行定义.

引用了 platform::Deref() , 以及 YSLib::UI::wgt.

函数调用图:

## 类成员变量说明

## ◆ Background

HBrush YSLib::UI::Widget::Background

mutable

背景。

自从
  build 294

在文件 YWidget.h 第 395 行定义.

被这些函数引用 YSLib::UI::Control::Control(), YSLib::UI::Desktop::Desktop(), YSLib::UI::ImplDeDtor(), InitializeEvents(), YSLib::UI::ListBox::ListBox(), YSLib::UI::Menu::Menu(), YSLib::UI::ProgressBar::ProgressBar() , 以及 YSLib::UI::ProgressBar::Refresh().

## ◆ controller_ptr

unique_ptr<AController> YSLib::UI::Widget::controller_ptr

private

控制器指针。

在文件 YWidget.h 第 387 行定义.

## ◆ Height [1/2]

YSLib::UI::Widget::Height

在文件 YWidget.h 第 458 行定义.

被这些函数引用 YSLib::UI::ImplDeDtor() , 以及 YSLib::UI::TextList::TextList().

## ◆ Height [2/2]

Renderer AView YSLib::UI::Widget::Height

在文件 YWidget.h 第 466 行定义.

## ◆ Renderer

Renderer YSLib::UI::Widget::Renderer

在文件 YWidget.h 第 459 行定义.

## ◆ renderer_ptr

unique_ptr<Renderer> YSLib::UI::Widget::renderer_ptr

private

渲染器指针。

在文件 YWidget.h 第 386 行定义.

## ◆ SDst [1/2]

Renderer AView YSLib::UI::Widget::SDst

在文件 YWidget.h 第 458 行定义.

被这些函数引用 YSLib::UI::TreeList::GetIndentWidth(), YSLib::UI::TextList::InvalidateSelected(), YSLib::UI::ListBox::ListBox(), YSLib::UI::TextList::LocateViewPosition(), YSLib::UI::HexViewArea::Refresh() , 以及 YSLib::UI::ATrack::SetLargeDelta().

## ◆ SDst [2/2]

Renderer AView YSLib::UI::Widget::SDst

在文件 YWidget.h 第 462 行定义.

## ◆ SPos

Renderer AView YSLib::UI::Widget::SPos

在文件 YWidget.h 第 463 行定义.

被这些函数引用 YSLib::UI::ATrack::CheckArea(), YSLib::UI::TextBox::GetCaretLocation(), YSLib::UI::TreeList::GetIndentBoxBounds(), YSLib::UI::HorizontalTrack::HorizontalTrack(), YSLib::UI::TextList::InvalidateSelected(), YSLib::UI::ATrack::LocateThumb(), YSLib::UI::TabBar::PerformLayout(), YSLib::UI::ProgressBar::Refresh(), YSLib::UI::HexViewArea::Refresh(), YSLib::UI::ATrack::SetThumbPosition(), YSLib::UI::ATrack::SetValue(), YSLib::UI::TextList::TextList() , 以及 YSLib::UI::TreeList::TreeList().

## ◆ View

Renderer AView YSLib::UI::Widget::View

在文件 YWidget.h 第 461 行定义.

被这些函数引用 SetView().

## ◆ view_ptr

unique_ptr<AView> YSLib::UI::Widget::view_ptr

private

部件视图指针。

不变性
  非空。

自从
  build 346
  build 569

在文件 YWidget.h 第 385 行定义.

被这些函数引用 SetView().

## ◆ Width

Renderer AView YSLib::UI::Widget::Width

在文件 YWidget.h 第 462 行定义.

被这些函数引用 YSLib::UI::ImplDeDtor() , 以及 YSLib::UI::TextList::TextList().

## ◆ X

Renderer AView YSLib::UI::Widget::X

在文件 YWidget.h 第 463 行定义.

## ◆ Y

Renderer AView YSLib::UI::Widget::Y

在文件 YWidget.h 第 464 行定义.

被这些函数引用 YSLib::UI::HorizontalTrack::HorizontalTrack().

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

- YWidget.h
- YWidget.cpp