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#ifndef QABSTRACTSTATE_H
5#define QABSTRACTSTATE_H
6
7#include <QtCore/qobject.h>
8#include <QtStateMachine/qstatemachineglobal.h>
9
10QT_BEGIN_NAMESPACE
11
12class QState;
13class QStateMachine;
14
15class QAbstractStatePrivate;
16class Q_STATEMACHINE_EXPORT QAbstractState : public QObject
17{
18 Q_OBJECT
19 Q_PROPERTY(bool active READ active NOTIFY activeChanged BINDABLE bindableActive)
20public:
21 ~QAbstractState();
22
23 QState *parentState() const;
24 QStateMachine *machine() const;
25
26 bool active() const;
27 QBindable<bool> bindableActive();
28
29Q_SIGNALS:
30 void entered(QPrivateSignal);
31 void exited(QPrivateSignal);
32 void activeChanged(bool active);
33
34protected:
35 QAbstractState(QState *parent = nullptr);
36
37 virtual void onEntry(QEvent *event) = 0;
38 virtual void onExit(QEvent *event) = 0;
39
40 bool event(QEvent *e) override;
41
42protected:
43 QAbstractState(QAbstractStatePrivate &dd, QState *parent);
44
45private:
46 Q_DISABLE_COPY(QAbstractState)
47 Q_DECLARE_PRIVATE(QAbstractState)
48};
49
50QT_END_NAMESPACE
51
52#endif
53

source code of qtscxml/src/statemachine/qabstractstate.h