1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qfinalstate_p.h"
5
6QT_BEGIN_NAMESPACE
7
8/*!
9 \class QFinalState
10 \inmodule QtStateMachine
11
12 \brief The QFinalState class provides a final state.
13
14 \since 4.6
15 \ingroup statemachine
16
17 A final state is used to communicate that (part of) a QStateMachine has
18 finished its work. When a final top-level state is entered, the state
19 machine's \l{QStateMachine::finished()}{finished}() signal is emitted. In
20 general, when a final substate (a child of a QState) is entered, the parent
21 state's \l{QState::finished()}{finished}() signal is emitted. QFinalState
22 is part of \l{Qt State Machine Overview}{Qt State Machine Framework}.
23
24 To use a final state, you create a QFinalState object and add a transition
25 to it from another state. Example:
26
27 \code
28 QPushButton button;
29
30 QStateMachine machine;
31 QState *s1 = new QState();
32 QFinalState *s2 = new QFinalState();
33 s1->addTransition(&button, SIGNAL(clicked()), s2);
34 machine.addState(s1);
35 machine.addState(s2);
36
37 QObject::connect(&machine, SIGNAL(finished()), QApplication::instance(), SLOT(quit()));
38 machine.setInitialState(s1);
39 machine.start();
40 \endcode
41
42 \sa QState::finished()
43*/
44
45QFinalStatePrivate::QFinalStatePrivate()
46 : QAbstractStatePrivate(FinalState)
47{
48}
49
50QFinalStatePrivate::~QFinalStatePrivate()
51{
52 // to prevent vtables being generated in every file that includes the private header
53}
54
55/*!
56 Constructs a new QFinalState object with the given \a parent state.
57*/
58QFinalState::QFinalState(QState *parent)
59 : QAbstractState(*new QFinalStatePrivate, parent)
60{
61}
62
63/*!
64 \internal
65 */
66QFinalState::QFinalState(QFinalStatePrivate &dd, QState *parent)
67 : QAbstractState(dd, parent)
68{
69}
70
71
72/*!
73 Destroys this final state.
74*/
75QFinalState::~QFinalState()
76{
77}
78
79/*!
80 \reimp
81*/
82void QFinalState::onEntry(QEvent *event)
83{
84 Q_UNUSED(event);
85}
86
87/*!
88 \reimp
89*/
90void QFinalState::onExit(QEvent *event)
91{
92 Q_UNUSED(event);
93}
94
95/*!
96 \reimp
97*/
98bool QFinalState::event(QEvent *e)
99{
100 return QAbstractState::event(e);
101}
102
103QT_END_NAMESPACE
104
105#include "moc_qfinalstate.cpp"
106

source code of qtscxml/src/statemachine/qfinalstate.cpp