3#include <QtStateMachine/QState>
4#include <QtStateMachine/QStateMachine>
8 , _timeoutMsecs(timeoutMsecs)
11 setTargetState(target);
14 _timer.setSingleShot(
true);
20 if (!source || _sourceAttached) {
24 connect(source, &QState::entered,
this, &TimeoutTransition::_onSourceStateEntered, Qt::UniqueConnection);
25 connect(source, &QState::exited,
this, &TimeoutTransition::_onSourceStateExited, Qt::UniqueConnection);
26 _sourceAttached =
true;
29void TimeoutTransition::_onAddedToState()
35void TimeoutTransition::_onSourceStateEntered()
37 _timer.start(_timeoutMsecs);
40void TimeoutTransition::_onSourceStateExited()
48 if (e->type() == QEvent::ParentChange) {
53 if (!_sourceAttached) {
54 QTimer::singleShot(0,
this, [
this]() { _onAddedToState(); });
57 return QGCSignalTransition::event(e);
Base class for signal-based transitions that need access to QGCStateMachine and Vehicle.
void onTransition(QEvent *event) override
TimeoutTransition(int timeoutMsecs, QAbstractState *target=nullptr)
bool event(QEvent *e) override
void timeout()
Emitted when the timeout expires (internal use - triggers transition)
void attachToSourceState(QState *source)