QHistoryState Class
QHistoryState 类提供了返回先前活动子状态的方法。更多
头文件: | #include <QHistoryState> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
qmake: | QT += statemachine |
继承: | QAbstractState |
公共类型
enum | HistoryType { ShallowHistory, DeepHistory } |
属性
- defaultState : QAbstractState*
- defaultTransition : QAbstractTransition*
- historyType : HistoryType
公共功能
QHistoryState(QState *parent = nullptr) | |
QHistoryState(QHistoryState::HistoryType type, QState *parent = nullptr) | |
virtual | ~QHistoryState() |
QBindable<QAbstractTransition *> | bindableDefaultTransition() |
QBindable<QHistoryState::HistoryType> | bindableHistoryType() |
QAbstractState * | defaultState() const |
QAbstractTransition * | defaultTransition() const |
QHistoryState::HistoryType | historyType() const |
void | setDefaultState(QAbstractState *state) |
void | setDefaultTransition(QAbstractTransition *transition) |
void | setHistoryType(QHistoryState::HistoryType type) |
信号
void | defaultStateChanged() |
void | defaultTransitionChanged() |
void | historyTypeChanged() |
重新实现的受保护函数
virtual bool | event(QEvent *e) override |
virtual void | onEntry(QEvent *event) override |
virtual void | onExit(QEvent *event) override |
详细说明
历史状态是一种伪状态,代表父状态最后一次退出时的子状态。以历史状态为目标的转换实际上是向父状态的一个或多个其他子状态的转换。QHistoryState 是Qt State Machine Framework 的一部分。
如果父状态从未进入过,则使用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 属性进行配置。
成员类型文档
enum QHistoryState::HistoryType
该枚举指定QHistoryState 记录的历史记录类型。
常量 | 值 | 描述 |
---|---|---|
QHistoryState::ShallowHistory | 0 | 只记录父状态的直接子状态。在这种情况下,以历史状态为目标的转换将以父状态最后一次退出时的直接子状态结束。这是默认情况。 |
QHistoryState::DeepHistory | 1 | 记录嵌套状态。在这种情况下,以历史状态为目标的转换将在父节点最后一次退出时所处的嵌套最深的子节点状态中结束。 |
属性文档
defaultState : QAbstractState*
此属性保存此历史状态的默认状态
访问功能:
QAbstractState * | defaultState() const |
void | setDefaultState(QAbstractState *state) |
Notifier 信号:
void | defaultStateChanged() | [see note below] |
注意: 这是一个私有信号。可在信号连接中使用,但用户不能发出。
[bindable]
defaultTransition : QAbstractTransition*
注意: 该属性支持QProperty 绑定。
此属性保存此历史状态的默认过渡
[bindable]
historyType : HistoryType
注意: 该属性支持QProperty 绑定。
此属性保存此历史状态记录的历史类型
该属性的默认值为QHistoryState::ShallowHistory 。
成员函数文档
QHistoryState::QHistoryState(QState *parent = nullptr)
用给定的parent 状态构建新的浅层历史状态。
QHistoryState::QHistoryState(QHistoryState::HistoryType type, QState *parent = nullptr)
以给定的parent 状态为type 构建一个新的历史状态。
[virtual noexcept]
QHistoryState::~QHistoryState()
销毁此历史状态。
QAbstractState *QHistoryState::defaultState() const
返回此历史状态的默认状态。默认状态表示在父状态从未进入过的情况下要过渡到的状态。
注: 属性 defaultState 的获取函数。
另请参阅 setDefaultState().
[private signal]
void QHistoryState::defaultStateChanged()
defaultState 属性发生变化时会发出该信号。
注意: 这是一个私有信号。可在信号连接中使用,但用户不能发出。
注: 属性defaultState 的通知信号。
另请参阅 QHistoryState::defaultState 。
QAbstractTransition *QHistoryState::defaultTransition() const
返回此历史状态的默认转换。默认转换是在历史状态从未进入过的情况下进行的。默认过渡的目标状态因此构成默认状态。
注: 属性 defaultTransition 的获取函数。
另请参阅 setDefaultTransition().
[private signal]
void QHistoryState::defaultTransitionChanged()
defaultTransition 属性发生变化时会发出该信号。
注意: 这是一个私有信号。可在信号连接中使用,但用户不能发出。
注: 属性defaultTransition 的通知信号。
另请参阅 QHistoryState::defaultTransition 。
[override virtual protected]
bool QHistoryState::event(QEvent *e)
重实现:QAbstractState::event(QEvent *e)。
QHistoryState::HistoryType QHistoryState::historyType() const
返回此历史状态记录的历史类型。
注: 属性 historyType 的获取函数。
另请参阅 setHistoryType().
[private signal]
void QHistoryState::historyTypeChanged()
historyType 属性发生变化时发出此信号。
注意: 这是一个私有信号。可在信号连接中使用,但用户不能发出。
注: 属性historyType 的通知信号。
另请参阅 QHistoryState::historyType 。
[override virtual protected]
void QHistoryState::onEntry(QEvent *event)
重实现:QAbstractState::onEntry(QEvent *event).
[override virtual protected]
void QHistoryState::onExit(QEvent *event)
重实现:QAbstractState::onExit(QEvent *event).
void QHistoryState::setDefaultState(QAbstractState *state)
将此历史状态的默认状态设置为给定的state 。state 必须是此历史状态的同级。
请注意,此函数不会将state 设置为其父节点的初始状态。
注: 属性defaultState 的设置函数。
另请参阅 defaultState() 。
void QHistoryState::setDefaultTransition(QAbstractTransition *transition)
将此历史状态的默认转换设置为给定的transition 。这将把transition 的源状态设置为历史状态。
请注意,transition 的 eventTest 方法永远不会被调用。
注: 属性defaultTransition 的设置函数。
另请参阅 defaultTransition() 。
void QHistoryState::setHistoryType(QHistoryState::HistoryType type)
设置此历史状态记录的历史记录type 。
注: 属性historyType 的设置函数。
另请参阅 historyType().
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.