C

StateManager 类

class SafeRenderer::StateManager

StateManager 类维护指标的状态。 更多...

头文件 #include <StateManager>
QtSafeRenderer 1.0

此类自 QtSafeRenderer 1.0 起被引入。

公共类型

枚举StateException { ConnectionAlreadyExists, NotConnectedEvent, TooManyConnections, StateNotFound, MaxNumOfLayoutsExceed, …, UnsupportedEvent }
枚举Visibility { Hidden, Visible }

公共函数

StateManager(SafeRenderer::AbstractWindow &window, SafeRenderer::QSafeLayout &layout, const SafeRenderer::ARGB clearColorArg = ARGB())
voidaddLayout(SafeRenderer::QSafeLayout *const layout)
voidadvanceAnimations()
voidconnect(const SafeRenderer::quint32 eventArg, const SafeRenderer::qchar *const stateName)
voidconnect(const SafeRenderer::quint32 eventArg, const SafeRenderer::quint32 stateIdArg)
SafeRenderer::quint32getItemAtPosition(const SafeRenderer::quint32 xArg, const SafeRenderer::quint32 yArg) const
SafeRenderer::quint32getItemState(const SafeRenderer::quint32 itemIdArg) const
SafeRenderer::quint32getLayout() const
const SafeRenderer::LayoutData &getLayoutItem(const SafeRenderer::quint32 idArg) const
voidhandleConnection(const SafeRenderer::QSafeEventSystem &eventArg)
voidhandleEvent(const SafeRenderer::QSafeEvent &eventArg)
boolisInTransition() const
boolisItemInTransition(const SafeRenderer::quint32 itemIdArg) const
boolsetLayout(SafeRenderer::QSafeLayout *const layout)

详细描述

StateManager 类维护指标的状态。

成员类型文档

enum StateManager::StateException

此枚举描述了 StateManager 类中的异常值。

常量描述
SafeRenderer::StateManager::ConnectionAlreadyExists0事件已经连接。
SafeRenderer::StateManager::NotConnectedEvent1事件未连接。
SafeRenderer::StateManager::TooManyConnections2连接数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS 中定义的值。
SafeRenderer::StateManager::StateNotFound3无法找到连接的项。
SafeRenderer::StateManager::MaxNumOfLayoutsExceed4布局数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_LAYOUTS 中定义的最大值。
SafeRenderer::StateManager::LayoutAlreadyExists5已添加具有相同 ID 的布局。
SafeRenderer::StateManager::InvalidLayoutId6布局 ID 为 0。
SafeRenderer::StateManager::InvalidLayoutObject7布局指针为 NULL 或布局不在 OK 状态。
SafeRenderer::StateManager::ItemOutOfBounds8布局项超出范围。
SafeRenderer::StateManager::UnsupportedEvent9事件 ID 不受支持。

枚举 StateManager::Visibility

此枚举描述了打开和关闭状态。

常量描述
SafeRenderer::StateManager::Hidden0项目隐藏。
SafeRenderer::StateManager::Visible1项目可见。

成员函数文档

StateManager::StateManager(SafeRenderer::AbstractWindow &window, SafeRenderer::QSafeLayout &layout, const SafeRenderer::ARGB clearColorArg = ARGB())

使用给定的window帧缓冲区、layout默认布局和clearColorArg清除颜色值构建一个 StateManager 对像。

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::QSafeLayout::LayoutException::UnknownBitmapId无法通过给定的位图ID找到位图。
SafeRenderer::QSafeLayout::LayoutException::UnknownItem找不到项目。
SafeRenderer::QSafeLayout::LayoutException::ItemOutOfBounds项目位置超出布局边界。
SafeRenderer::QSafeLayoutResourceReader::LayoutResourceReaderException::DataSizeMismatch资源文件不包含足够的数据或数据无效。
SafeRenderer::QSafeRenderer::RendererException::UnsupportedSurfaceFormat窗口中的每像素位数不是16或32。
SafeRenderer::QStringSplitter::QStringSplitterException::TooLongFileName资源文件包含一个过长的文件名。
SafeRenderer::StateManager::StateException::InvalidLayoutObjectlayout不在OK状态

void StateManager::addLayout(SafeRenderer::QSafeLayout *const layout)

向状态管理器添加新的layout。在此过程中,布局尚未投入使用。每个QSafeLayout实例都有一个唯一的ID,它是布局文件哈希值。此值用于QSafeEventChangeLayout事件在请求布局更改时。

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::StateManager::StateException::MaxNumOfLayoutsExceed布局数量超过最大值。
SafeRenderer::StateManager::StateException::LayoutAlreadyExists已添加具有相同ID的布局。

void StateManager::advanceAnimations()

如果有过渡进行中,则推进动画。此函数应由动画计时器调用。如果没有进行过渡,此函数不执行任何操作。

void StateManager::connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::qchar *const stateName)

将外部eventArg连接到stateName布局项目。 stateName是QML中安全项目的objectName

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::StateManager::StateException::ConnectionAlreadyExists事件已经连接。
SafeRenderer::StateManager::StateException::NotConnectedEvent事件未连接。
SafeRenderer::StateManager::StateException::TooManyConnections连接数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS 中定义的值。
SafeRenderer::StateManager::StateException::StateNotFound无法找到连接的项。

QML定义的示例

SafePicture {
    id: iconCoolant
    objectName: "iconCoolant"
    width: 30
    height: 30
    color: "#e41e25"
    source: "qrc:/iso-icons/iso_grs_7000_4_2426.dat"
}

您可以按照以下方式将外部事件EventEngineTemperature连接到iconCoolant项目

stateManager.connect(SafeRenderer::EventEngineTemperature, "iconCoolant");

void StateManager::connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::quint32 stateIdArg)

将外部 eventArg 连接到 stateIdArg 布局项。 stateIdArg 是 QML 中安全项目 objectName 计算出的哈希值。

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::StateManager::StateException::ConnectionAlreadyExists事件已经连接。
SafeRenderer::StateManager::StateException::NotConnectedEvent事件未连接。
SafeRenderer::StateManager::StateException::TooManyConnections连接数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS 中定义的值。
SafeRenderer::StateManager::StateException::StateNotFound无法找到连接的项。

SafeRenderer::quint32 StateManager::getItemAtPosition(const SafeRenderer::quint32 xArg, const SafeRenderer::quint32 yArg) const

返回 xArgyArg 位置的项目 ID。如果同一位置有多个项目,则返回最上面的可视项目。如果没有可见项目在该位置,则返回 0。

此函数在 QtSafeRenderer 2.0 中引入。

SafeRenderer::quint32 StateManager::getItemState(const SafeRenderer::quint32 itemIdArg) const

返回 itemIdArg 的状态。

SafeRenderer::quint32 StateManager::getLayout() const

返回活动布局的 ID。

const SafeRenderer::LayoutData &StateManager::getLayoutItem(const SafeRenderer::quint32 idArg) const

返回由 idArg 标识的 SafeRenderer::LayoutData 项。

void StateManager::handleConnection(const SafeRenderer::QSafeEventSystem &eventArg)

处理可以将其相关状态在开和关之间切换的 eventArg

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::QSafeRenderer::RendererException::BitmapOufOfScreen位图无法适应屏幕区域。
SafeRenderer::QSafeRenderer::RendererException::InvalidBitmapPointer位图指针是空指针。
SafeRenderer::QSafeRenderer::RendererException::InvalidBitmapId位图 ID 是 0。
SafeRenderer::StateManager::StateException::NotConnectedEvent事件未连接。

void StateManager::handleEvent(const SafeRenderer::QSafeEvent &eventArg)

处理 eventArg 事件。有关事件的信息,请参阅 QSafeEvent 类。

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::QSafeLayout::LayoutException::UnknownBitmapId无法通过给定的 ID 找到位图。
SafeRenderer::QSafeLayout::LayoutException::UnknownItem找不到项目。
SafeRenderer::QSafeLayout::LayoutException::ItemOutOfBounds项目位置超出布局边界。
SafeRenderer::QSafeRenderer::RendererException::BitmapOufOfScreen位图无法适应屏幕区域。
SafeRenderer::QSafeRenderer::RendererException::InvalidBitmapPointer位图指针是空指针。
SafeRenderer::QSafeRenderer::RendererException::InvalidBitmapId位图 ID 是 0。
SafeRenderer::StateManager::StateException::ConnectionAlreadyExists事件已经连接。
SafeRenderer::StateManager::StateException::NotConnectedEvent事件未连接。
SafeRenderer::StateManager::StateException::TooManyConnections连接数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS 中定义的值。
SafeRenderer::StateManager::StateException::StateNotFound无法找到连接的项。

bool StateManager::isInTransition() const

如果有过渡正在进行,则返回 true,否则返回 false。

bool StateManager::isItemInTransition(const SafeRenderer::quint32 itemIdArg) const

如果项目 itemIdArg 在过渡中,则返回 true,否则返回 false。

bool StateManager::setLayout(SafeRenderer::QSafeLayout *const layout)

StateManager 的当前布局更改为 layout

如果布局更改成功,则返回 true,否则返回 false。

如果失败,将抛出以下异常之一

常量描述
SafeRenderer::QSafeRenderer::RendererException::BitmapOufOfScreen位图无法适应屏幕区域。
SafeRenderer::QSafeRenderer::RendererException::InvalidBitmapPointer位图指针是空指针。
SafeRenderer::QSafeRenderer::RendererException::InvalidBitmapId位图 ID 是 0。

在特定的 Qt 许可证下可用。
了解更多。