C
StateManager 类
class SafeRenderer::StateManagerStateManager 类维护指标的状态。 更多...
头文件 | #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()) | |
void | addLayout(SafeRenderer::QSafeLayout *const layout) |
void | advanceAnimations() |
void | connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::qchar *const stateName) |
void | connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::quint32 stateIdArg) |
SafeRenderer::quint32 | getItemAtPosition(const SafeRenderer::quint32 xArg, const SafeRenderer::quint32 yArg) const |
SafeRenderer::quint32 | getItemState(const SafeRenderer::quint32 itemIdArg) const |
SafeRenderer::quint32 | getLayout() const |
const SafeRenderer::LayoutData & | getLayoutItem(const SafeRenderer::quint32 idArg) const |
void | handleConnection(const SafeRenderer::QSafeEventSystem &eventArg) |
void | handleEvent(const SafeRenderer::QSafeEvent &eventArg) |
bool | isInTransition() const |
bool | isItemInTransition(const SafeRenderer::quint32 itemIdArg) const |
bool | setLayout(SafeRenderer::QSafeLayout *const layout) |
成员类型文档
enum StateManager::StateException
此枚举描述了 StateManager 类中的异常值。
常量 | 值 | 描述 |
---|---|---|
SafeRenderer::StateManager::ConnectionAlreadyExists | 0 | 事件已经连接。 |
SafeRenderer::StateManager::NotConnectedEvent | 1 | 事件未连接。 |
SafeRenderer::StateManager::TooManyConnections | 2 | 连接数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS 中定义的值。 |
SafeRenderer::StateManager::StateNotFound | 3 | 无法找到连接的项。 |
SafeRenderer::StateManager::MaxNumOfLayoutsExceed | 4 | 布局数超过了在 SafeRenderer::Constraints::MAX_NUM_OF_LAYOUTS 中定义的最大值。 |
SafeRenderer::StateManager::LayoutAlreadyExists | 5 | 已添加具有相同 ID 的布局。 |
SafeRenderer::StateManager::InvalidLayoutId | 6 | 布局 ID 为 0。 |
SafeRenderer::StateManager::InvalidLayoutObject | 7 | 布局指针为 NULL 或布局不在 OK 状态。 |
SafeRenderer::StateManager::ItemOutOfBounds | 8 | 布局项超出范围。 |
SafeRenderer::StateManager::UnsupportedEvent | 9 | 事件 ID 不受支持。 |
枚举 StateManager::Visibility
此枚举描述了打开和关闭状态。
常量 | 值 | 描述 |
---|---|---|
SafeRenderer::StateManager::Hidden | 0 | 项目隐藏。 |
SafeRenderer::StateManager::Visible | 1 | 项目可见。 |
成员函数文档
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::InvalidLayoutObject | layout不在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
返回 xArg 和 yArg 位置的项目 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 许可证下可用。
了解更多。