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 框架的一部分。
使用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) |
通知信号:
| void | defaultStateChanged() | [see note below] |
注意:这是一个 私有信号。它可以在信号连接中使用,但用户无法触发该信号。
[bindable] defaultTransition : QAbstractTransition*
注意:此 属性支持QProperty 绑定。
该属性保存此历史记录状态的默认过渡效果
访问函数:
| QAbstractTransition * | defaultTransition() const |
| void | setDefaultTransition(QAbstractTransition *transition) |
通知信号:
| void | defaultTransitionChanged() | [see note below] |
注意:这是一个 私有信号。它可以在信号连接中使用,但用户无法触发该信号。
[bindable] historyType : HistoryType
注意:此 属性支持QProperty 绑定。
该属性存储此历史记录状态所记录的历史记录类型
该属性的默认值为QHistoryState::ShallowHistory 。
访问函数:
| QHistoryState::HistoryType | historyType() const |
| void | setHistoryType(QHistoryState::HistoryType type) |
通知器信号:
| void | historyTypeChanged() | [see note below] |
注意:这是一个 私有信号。它可以在信号连接中使用,但用户无法发出该信号。
成员函数文档
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()。
© 2026 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.