GraceFt v2.3
开源图形引擎 EGE(Easy Graphics Engine) 的高层封装库
 
载入中...
搜索中...
未找到
GFt::Block类 参考

块对象 更多...

#include <Block.h>

+ 类 GFt::Block 继承关系图:

Public 成员函数

 Block (const iRect &rect, Block *parent=nullptr, int zIndex=0)
 构造函数
 
virtual ~Block ()
 
iPoint absolutePosition () const
 计算相对于屏幕的绝对坐标
 
void addChild (Block *child)
 添加子对象
 
BlockgetParent () const
 获取父对象
 
int getZIndex () const
 获取层级
 
void hide ()
 隐藏块对象
 
bool isHide () const
 获取块当前是否被隐藏
 
iPoint relativePosFrom (Block *block) const
 计算相对于指定对象的相对坐标
 
void removeChild (Block *child)
 移除子对象
 
void setParent (Block *parent)
 设置父对象
 
void setZIndex (int zIndex)
 设置层级
 
void show ()
 显示块对象
 
- Public 成员函数 继承自 GFt::GraphInterface
 GraphInterface (iRect rect)
 构造函数
 
virtual ~GraphInterface ()
 
const iRectrect () const
 
void setHeight (int height)
 
void setPosition (const iPoint &pos)
 
void setRect (const iRect &rect)
 
void setSize (const iSize &size)
 
void setWidth (int width)
 
void setX (int x)
 
void setY (int y)
 

Public 属性

Signal< Block * > FocusOff
 当该对象失去焦点时触发该信号
 
Signal< Block * > FocusOn
 当该对象获得焦点时触发该信号
 
Signal< Block * > HoverOff
 当鼠标移开该对象时之上时触发该信号
 
Signal< Block * > HoverOn
 当鼠标悬停该对象时之上时触发该信号
 
Signal< bool > ViewChanged
 当该对象显示状态变化时触发该信号
 
- Public 属性 继承自 GFt::GraphInterface
Signal< const iPoint & > onPositionChanged
 
Signal< const iSize & > onSizeChanged
 

Protected 成员函数

void onDraw (Graphics &g) override
 此函数用于绘制内容
 
void onKeyPress (KeyPressEvent *event) override
 此函数用于处理键盘按键按下事件
 
void onKeyRelease (KeyReleaseEvent *event) override
 此函数用于处理键盘按键释放事件
 
void onMouseButtonPress (MouseButtonPressEvent *event) override
 此函数用于处理鼠标按钮按下事件
 
void onMouseButtonRelease (MouseButtonReleaseEvent *event) override
 此函数用于处理鼠标按钮释放事件
 
void onMouseMove (MouseMoveEvent *event) override
 此函数用于处理鼠标移动事件
 
void onMouseWheel (MouseWheelEvent *event) override
 此函数用于处理鼠标滚轮事件
 
void onTextInput (TextInputEvent *event) override
 此函数用于处理文本输入事件
 
- Protected 成员函数 继承自 GFt::GraphInterface
- Protected 成员函数 继承自 GFt::MouseButtonPressEventMonitor
- Protected 成员函数 继承自 GFt::MouseButtonReleaseEventMonitor
- Protected 成员函数 继承自 GFt::MouseMoveEventMonitor
- Protected 成员函数 继承自 GFt::MouseWheelEventMonitor
- Protected 成员函数 继承自 GFt::KeyPressEventMonitor
- Protected 成员函数 继承自 GFt::KeyReleaseEventMonitor
- Protected 成员函数 继承自 GFt::TextInputEventMonitor

友元

class Application
 

详细描述

块对象

块对象是UI的基本构件, 它提供了对象嵌入UI的基础设施 它掌管了整个UI的对象树, 管理事件的分发、传递和处理, 同时也负责视图重绘

构造及析构函数说明

◆ Block()

GFt::Block::Block ( const iRect & rect,
Block * parent = nullptr,
int zIndex = 0 )

构造函数

参数
rect所在区域
parent父对象
zIndex层级

层级用于决定绘制事件的先后顺序和事件传递的优先级

◆ ~Block()

GFt::Block::~Block ( )
virtual

成员函数说明

◆ absolutePosition()

iPoint GFt::Block::absolutePosition ( ) const

计算相对于屏幕的绝对坐标

返回
绝对坐标

◆ addChild()

void GFt::Block::addChild ( Block * child)

添加子对象

注解
如果子类为Layout的子类,且希望更新布局,则应当调用子类的 addItem() 方法添加子对象,否则将不会引发布局更新
参数
child子对象
参见
RowLayout::addItem() ColumnLayout::addItem() GridLayout::addItem()

◆ getParent()

Block * GFt::Block::getParent ( ) const

获取父对象

返回
父对象

◆ getZIndex()

int GFt::Block::getZIndex ( ) const

获取层级

返回
层级
参见
setZIndex

◆ hide()

void GFt::Block::hide ( )

隐藏块对象

此操作影响当前对象及其所有子对象,被隐藏的对象将不会被触发任何事件

◆ isHide()

bool GFt::Block::isHide ( ) const

获取块当前是否被隐藏

返回
是否被隐藏
参见
hide() show()

◆ onDraw()

void GFt::Block::onDraw ( Graphics & g)
overrideprotectedvirtual

此函数用于绘制内容

参数
g绘图设备对象

此函数会在每一帧绘制时被调用, 用于绘制内容

注解
若启用了裁剪优化,且此对象所在位置不与父对象的区域存在交集, 则此函数不会被调用
由于此函数会在每帧渲染时调用,因而应尽量避免过多的计算、创建和销毁临时对象,以提高效率。
渲染帧时长(可通过 Application::getRenderTime() 获取)最好控制在16ms以内,否则会引发较为明显的卡顿

实现了 GFt::GraphInterface.

GFt::ColumnLayout, GFt::GridLayout, GFt::RowLayout, GFt::Widget::Button, GFt::Widget::CheckBox, GFt::Widget::HScrollBar, GFt::Widget::HSlider, GFt::Widget::Label, GFt::Widget::RadioBox, GFt::Widget::VScrollBar , 以及 GFt::Widget::VSlider 重载.

◆ onKeyPress()

void GFt::Block::onKeyPress ( KeyPressEvent * event)
overrideprotectedvirtual

此函数用于处理键盘按键按下事件

参数
event键盘按键按下事件
注解
键盘处理函数会依据当前焦点块进行事件的捕获决断, 并将事件传递给相应的对象进行处理
具体的决断逻辑为:从当前焦点块开始,调用其事件处理函数,之后若冒泡行为未被阻止, 则再向上冒泡(即向父对象传递事件),直到根节点。
键盘事件处理示意图
参见
BlockFocusManager

实现了 GFt::KeyPressEventMonitor.

◆ onKeyRelease()

void GFt::Block::onKeyRelease ( KeyReleaseEvent * event)
overrideprotectedvirtual

此函数用于处理键盘按键释放事件

参数
event键盘按键释放事件
参见
onKeyPress

实现了 GFt::KeyReleaseEventMonitor.

◆ onMouseButtonPress()

void GFt::Block::onMouseButtonPress ( MouseButtonPressEvent * event)
overrideprotectedvirtual

此函数用于处理鼠标按钮按下事件

此函数存在默认行为:当此对象被点击时捕获焦点

参数
event鼠标按钮按下事件
注解
鼠标处理函数会依据鼠标位置进行事件的捕获决断, 并将事件传递给相应的对象进行处理
具体的决断逻辑为:从根节点开始,查找首个满足鼠标位置在其区域内的对象,以该对象 为根节点再次重复此操作,直到某个对象不存在满足条件的子对象,则将事件传递给该对 象进行处理。该对象处理后若冒泡行为未被阻止,则再向上冒泡(即向父对象传递事件), 直到根节点。
鼠标事件处理示意图

实现了 GFt::MouseButtonPressEventMonitor.

GFt::Widget::Button, GFt::Widget::CheckBox, GFt::Widget::HScrollBar, GFt::Widget::HSlider, GFt::Widget::Label, GFt::Widget::RadioBox, GFt::Widget::VScrollBar , 以及 GFt::Widget::VSlider 重载.

◆ onMouseButtonRelease()

void GFt::Block::onMouseButtonRelease ( MouseButtonReleaseEvent * event)
overrideprotectedvirtual

此函数用于处理鼠标按钮释放事件

参数
event鼠标按钮释放事件
参见
onMouseButtonPress

实现了 GFt::MouseButtonReleaseEventMonitor.

GFt::Widget::Button 重载.

◆ onMouseMove()

void GFt::Block::onMouseMove ( MouseMoveEvent * event)
overrideprotectedvirtual

此函数用于处理鼠标移动事件

参数
event鼠标移动事件
参见
onMouseButtonPress

实现了 GFt::MouseMoveEventMonitor.

◆ onMouseWheel()

void GFt::Block::onMouseWheel ( MouseWheelEvent * event)
overrideprotectedvirtual

此函数用于处理鼠标滚轮事件

参数
event鼠标滚轮事件
参见
onMouseButtonPress

实现了 GFt::MouseWheelEventMonitor.

GFt::Widget::HScrollBar , 以及 GFt::Widget::VScrollBar 重载.

◆ onTextInput()

void GFt::Block::onTextInput ( TextInputEvent * event)
overrideprotectedvirtual

此函数用于处理文本输入事件

参数
event文本输入事件
参见
onKeyPress

实现了 GFt::TextInputEventMonitor.

◆ relativePosFrom()

iPoint GFt::Block::relativePosFrom ( Block * block) const

计算相对于指定对象的相对坐标

参数
block指定对象
返回
相对坐标

计算相对于指定对象的相对坐标,以此对象的左上角为原点,计算出相对于指定对象的坐标

注解
若指定对象为nullptr,则返回相对于屏幕的绝对坐标

◆ removeChild()

void GFt::Block::removeChild ( Block * child)

移除子对象

注解
如果子类为Layout的子类,且希望更新布局,则应当调用子类的 removeItem() 方法移除子对象,否则将不会引发布局更新
参数
child子对象
参见
RowLayout::removeItem() ColumnLayout::removeItem() GridLayout::removeItem()

◆ setParent()

void GFt::Block::setParent ( Block * parent)

设置父对象

参数
parent父对象

◆ setZIndex()

void GFt::Block::setZIndex ( int zIndex)

设置层级

参数
zIndex层级

层级用于决定绘制事件和输入事件的先后顺序,层级越高,越先捕获输入事件,越后触发绘制事件

若层级相同,则根据添加顺序决定先后顺序

层级只决定同一对象的子对象之间的顺序

层级关系示意图

◆ show()

void GFt::Block::show ( )

显示块对象

此操作影响当前对象及其所有子对象

参见
hide()

友元及相关符号说明

◆ Application

friend class Application
friend

类成员变量说明

◆ FocusOff

Signal<Block*> GFt::Block::FocusOff

当该对象失去焦点时触发该信号

◆ FocusOn

Signal<Block*> GFt::Block::FocusOn

当该对象获得焦点时触发该信号

◆ HoverOff

Signal<Block*> GFt::Block::HoverOff

当鼠标移开该对象时之上时触发该信号

◆ HoverOn

Signal<Block*> GFt::Block::HoverOn

当鼠标悬停该对象时之上时触发该信号

◆ ViewChanged

Signal< bool > GFt::Block::ViewChanged

当该对象显示状态变化时触发该信号