QHistoryState 类

QHistoryState 类提供了一种返回到先前活动子状态的方法。 更多信息...

头文件 #include <QHistoryState>
CMakefind_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmakeQT += statemachine
继承 QAbstractState

公共类型

枚举历史类型 { ShallowHistory, DeepHistory }

属性

公共函数

QHistoryState(QState *parent = nullptr)
QHistoryState(QHistoryState::HistoryType type, QState *parent = nullptr)
虚拟~QHistoryState()
QBindable<QAbstractTransition *>bindableDefaultTransition()
QBindable<QHistoryState::HistoryType>bindableHistoryType()
QAbstractState *defaultState() const
QAbstractTransition *default转换() const
QHistoryState::HistoryTypehistoryType() const
voidsetDefaultState(QAbstractState *state)
voidsetDefaultTransition(QAbstractTransition *transition)
voidsetHistoryType(QHistoryState::HistoryType type)

信号

重写受保护的函数

虚拟 boolevent(QEvent *e) override
虚拟 voidonEntry(QEvent *event) override
虚拟 voidonExit(QEvent *event) override

详细描述

历史状态是一种虚拟状态,表示父状态在父状态上次退出时所处的子状态。以历史状态为目标的状态转移实际上是到父状态的另一个或多个子状态的状态转移。QHistoryState 是 Qt 状态机框架的一部分。

使用 setDefaultState() 函数设置在父状态从未被进入时应该进入的状态。示例

QStateMachine machine;

QState *s1 = new QState();
QState *s11 = new QState(s1);
QState *s12 = new QState(s1);

QHistoryState *s1h = new QHistoryState(s1);
s1h->setDefaultState(s11);

machine.addState(s1);

QState *s2 = new QState();
machine.addState(s2);

QPushButton *button = new QPushButton();
// Clicking the button will cause the state machine to enter the child state
// that s1 was in the last time s1 was exited, or the history state's default
// state if s1 has never been entered.
s1->addTransition(button, SIGNAL(clicked()), s1h);

如果需要进入多个默认状态,或者需要执行对默认状态(组)的转换,应设置defaultTransition。注意,该转换的eventTest()方法将不会被调用:当进入历史状态时,转换的选择和执行是自动完成的。

默认情况下,历史状态是浅层次的,这意味着它不会记住嵌套状态。这可以通过historyType属性进行配置。

成员类型文档

枚举 QHistoryState::HistoryType

此枚举指定QHistoryState记录的历史类型。

常量描述
QHistoryState::ShallowHistory0只记录父状态的直接子状态。在这种情况下,以历史状态为目标的转换将结束时父状态上次的退出状态。这是默认行为。
QHistoryState::DeepHistory1记录嵌套状态。在这种情况下,以历史状态为目标的转换将结束时父状态上次的退出状态的深层嵌套 descendant 状态。

属性文档

defaultState : QAbstractState*

此属性包含此历史状态的默认状态。

访问函数

QAbstractState *defaultState() const
voidsetDefaultState(QAbstractState *state)

通知信号

voiddefaultStateChanged()[以下有注释]

注意:这是一个私有信号。虽然可以在信号连接中使用,但不能由用户触发。

[可绑定] defaultTransition : QAbstractTransition*

注意:此属性支持QProperty绑定。

此属性包含此历史状态的默认转换。

[可绑定] historyType : HistoryType

注意:此属性支持QProperty绑定。

此属性包含此历史状态记录的历史类型。

此属性的默认值是QHistoryState::ShallowHistory

成员函数文档

QHistoryState::QHistoryState(QState *parent = nullptr)

使用给定的parent状态构建一个新的浅层次历史状态。

QHistoryState::QHistoryState(QHistoryState::HistoryType type, QState *parent = nullptr)

使用给定的type和给定的parent状态构建一个新的历史状态。

[virtual noexcept] QHistoryState::~QHistoryState()

销毁此历史状态。

QAbstractState *QHistoryState::defaultState() const

返回这个历史状态的默认状态。默认状态表示在父状态首次进入之前要转换到的状态。

注意:defaultState 属性的获取器函数。

另请参阅:setDefaultState()。

[私有信号] void QHistoryState::defaultStateChanged()

当 defaultState 属性发生变化时,会发出此信号。

注意:这是一个私有信号。虽然可以在信号连接中使用,但不能由用户触发。

注意:defaultState 属性的观察者信号。

另请参阅:QHistoryState::defaultState

QAbstractTransition *QHistoryState::defaultTransition() const

返回这个历史状态的默认转换。当历史状态首次进入时,会采用默认转换。因此,默认转换的目标状态组成默认状态。

注意:defaultTransition 属性的获取器函数。

另请参阅:setDefaultTransition ()。

[私有信号] void QHistoryState::defaultTransitionChanged()

当 defaultTransition 属性发生变化时,会发出此信号。

注意:这是一个私有信号。虽然可以在信号连接中使用,但不能由用户触发。

注意:defaultTransition 属性的观察者信号。

另请参阅:QHistoryState::defaultTransition

[重写虚拟受保护] bool QHistoryState::event(QEvent *e)

重写了: QAbstractState::event(QEvent *e)。

QHistoryState::HistoryType QHistoryState::historyType() const

返回此历史状态记录的历史类型。

注意:historyType 属性的获取器函数。

另请参阅:setHistoryType ()。

[私有信号] void QHistoryState::historyTypeChanged()

当 historyType 属性发生变化时,会发出此信号。

注意:这是一个私有信号。虽然可以在信号连接中使用,但不能由用户触发。

注意:historyType 属性的观察者信号。

另请参阅:QHistoryState::historyType

[重写虚拟受保护] void QHistoryState::onEntry(QEvent *event)

重写了: QAbstractState::onEntry(QEvent *event)。

[重写虚拟受保护] void QHistoryState::onExit(QEvent *event)

重写了: QAbstractState::onExit(QEvent *event)。

void QHistoryState::setDefaultState(QAbstractState *state)

将此历史状态的默认状态设置为给定的 statestate 必须是这个历史状态的兄弟状态。

注意,此函数不会将 state 设置为其父状态的开始状态。

注意:defaultState 属性的设置器函数。

另请参阅 defaultState()。

void QHistoryState::setDefaultTransition(QAbstractTransition *transition)

将此历史状态的默认转换设置为指定的转换。这将设置转换的源状态为历史状态。

请注意,转换的事件测试方法永远不会被调用。

注意:属性defaultTransition的设置函数。

另请参阅 defaultTransition

void QHistoryState::setHistoryType(QHistoryState::HistoryType type)

设置此历史状态记录的历史类型

注意:属性historyType的设置函数。

另请参阅 historyType

© 2024 Qt 公司有限公司。本文档的文档贡献归各自的版权所有。本文档按自由软件基金会发布的GNU自由文档许可协议版本1.3条款提供。