QFinalState Class

The QFinalState class provides a final state. More...

Header: #include <QFinalState>
CMake: find_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmake: QT += statemachine
Inherits: QAbstractState

Public Functions

QFinalState(QState *parent = nullptr)
virtual ~QFinalState()

Reimplemented Protected Functions

virtual bool event(QEvent *e) override
virtual void onEntry(QEvent *event) override
virtual void onExit(QEvent *event) override

Detailed Description

A final state is used to communicate that (part of) a QStateMachine has finished its work. When a final top-level state is entered, the state machine's finished() signal is emitted. In general, when a final substate (a child of a QState) is entered, the parent state's finished() signal is emitted. QFinalState is part of Qt State Machine Framework.

To use a final state, you create a QFinalState object and add a transition to it from another state. Example:

QPushButton button;

QStateMachine machine;
QState *s1 = new QState();
QFinalState *s2 = new QFinalState();
s1->addTransition(&button, SIGNAL(clicked()), s2);
machine.addState(s1);
machine.addState(s2);

QObject::connect(&machine, SIGNAL(finished()), QApplication::instance(), SLOT(quit()));
machine.setInitialState(s1);
machine.start();

See also QState::finished().

Member Function Documentation

QFinalState::QFinalState(QState *parent = nullptr)

Constructs a new QFinalState object with the given parent state.

[virtual] QFinalState::~QFinalState()

Destroys this final state.

[override virtual protected] bool QFinalState::event(QEvent *e)

Reimplements: QAbstractState::event(QEvent *e).

[override virtual protected] void QFinalState::onEntry(QEvent *event)

Reimplements: QAbstractState::onEntry(QEvent *event).

[override virtual protected] void QFinalState::onExit(QEvent *event)

Reimplements: QAbstractState::onExit(QEvent *event).

© 2023 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.