QSignalTransition Class

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

Header: #include <QSignalTransition>
qmake: QT += core
Since: Qt 4.6
Inherits: QAbstractTransition

Properties

Public Functions

QSignalTransition(QState * sourceState = Q_NULLPTR)
QSignalTransition(const QObject * sender, const char * signal, QState * sourceState = Q_NULLPTR)
QSignalTransition(const QObject * sender, PointerToMemberFunction signal, QState * sourceState = Q_NULLPTR)
~QSignalTransition()
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)
virtual bool eventTest(QEvent * event)
virtual void onTransition(QEvent * event)

Additional Inherited Members

Detailed Description

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

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 The 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

senderObject : QObject *

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

Access functions:

QObject * senderObject() const
void setSenderObject(const QObject * sender)

Notifier signal:

void senderObjectChanged()[see note below]

Note: This is a private signal. It can be used in signal connections but cannot be emitted by the user.

signal : QByteArray

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

Access functions:

QByteArray signal() const
void setSignal(const QByteArray & signal)

Notifier signal:

void signalChanged()[see note below]

Note: This is a private signal. It can be used in signal connections but cannot be emitted by the user.

Member Function Documentation

QSignalTransition::QSignalTransition(QState * sourceState = Q_NULLPTR)

Constructs a new signal transition with the given sourceState.

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

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

QSignalTransition::QSignalTransition(const QObject * sender, PointerToMemberFunction signal, QState * sourceState = Q_NULLPTR)

This is an overloaded function.

Constructs a new signal transition associated with the given signal of the given sender object and with the given sourceState. This constructor is enabled if the compiler supports delegating constructors, as indicated by the presence of the macro Q_COMPILER_DELEGATING_CONSTRUCTORS.

This function was introduced in Qt 5.7.

QSignalTransition::~QSignalTransition()

Destroys this signal transition.

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

Reimplemented from QObject::event().

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

Reimplemented from QAbstractTransition::eventTest().

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.

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

Reimplemented from QAbstractTransition::onTransition().