QSignalTransition Class

The QSignalTransition class provides a transition based on a Qt signal. More...

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

Properties

Public Functions

QSignalTransition(QState *sourceState = nullptr)
QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)
virtual ~QSignalTransition()
QBindable<const QObject *> bindableSenderObject()
QBindable<QByteArray> bindableSignal()
const QObject *senderObject() const
void setSenderObject(const QObject *sender)
void setSignal(const QByteArray &signal)
QByteArray signal() const

Signals

Reimplemented Protected Functions

virtual bool event(QEvent *e) override
virtual bool eventTest(QEvent *event) override
virtual void onTransition(QEvent *event) override

Detailed Description

Typically you would use the overload of QState::addTransition() that takes a sender and signal as arguments, rather than creating QSignalTransition objects directly. QSignalTransition is part of Qt State Machine Framework.

You can subclass QSignalTransition and reimplement eventTest() to make a signal transition conditional; the event object passed to eventTest() will be a QStateMachine::SignalEvent object. Example:

 class CheckedTransition : public QSignalTransition
 {
 public:
     CheckedTransition(QCheckBox *check)
         : QSignalTransition(check, SIGNAL(stateChanged(int))) {}
 protected:
     bool eventTest(QEvent *e) {
         if (!QSignalTransition::eventTest(e))
             return false;
         QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
         return (se->arguments().at(0).toInt() == Qt::Checked);
     }
 };

 ...

 QCheckBox *check = new QCheckBox();
 check->setTristate(true);

 QState *s1 = new QState();
 QState *s2 = new QState();
 CheckedTransition *t1 = new CheckedTransition(check);
 t1->setTargetState(s2);
 s1->addTransition(t1);

Property Documentation

[bindable] senderObject : const QObject*

Note: This property supports QProperty bindings.

This property holds the sender object that this signal transition is associated with

[bindable] signal : QByteArray

Note: This property supports QProperty bindings.

This property holds the signal that this signal transition is associated with

Member Function Documentation

QSignalTransition::QSignalTransition(QState *sourceState = nullptr)

Constructs a new signal transition with the given sourceState.

QSignalTransition::QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)

Constructs a new signal transition associated with the given signal of the given sender, and with the given sourceState.

[virtual noexcept] QSignalTransition::~QSignalTransition()

Destroys this signal transition.

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

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

[override virtual protected] bool QSignalTransition::eventTest(QEvent *event)

The default implementation returns true if the event is a QStateMachine::SignalEvent object and the event's sender and signal index match this transition, and returns false otherwise.

[override virtual protected] void QSignalTransition::onTransition(QEvent *event)

const QObject *QSignalTransition::senderObject() const

Returns the sender object associated with this signal transition.

Note: Getter function for property senderObject.

See also setSenderObject().

void QSignalTransition::setSenderObject(const QObject *sender)

Sets the sender object associated with this signal transition.

Note: Setter function for property senderObject.

See also senderObject().

void QSignalTransition::setSignal(const QByteArray &signal)

Sets the signal associated with this signal transition.

Note: Setter function for property signal.

See also signal().

QByteArray QSignalTransition::signal() const

Returns the signal associated with this signal transition.

Note: Getter function for property signal.

See also setSignal().