QSignalTransition Class

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

#include <QSignalTransition>

Inherits: QAbstractTransition.

This class was introduced in QtCore 4.6.

Properties

Public Functions

QSignalTransition(QState * sourceState = 0)
QSignalTransition(const QObject * sender, const char * signal, QState * sourceState = 0)
~QSignalTransition()
QObject * senderObject() const
void setSenderObject(const QObject * sender)
void setSignal(const QByteArray & signal)
QByteArray signal() const

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)

signal : QByteArray

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

Access functions:

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

Member Function Documentation

QSignalTransition::QSignalTransition(QState * sourceState = 0)

Constructs a new signal transition with the given sourceState.

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

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

QSignalTransition::~QSignalTransition()

Destroys this signal transition.

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

Reimplemented from QObject::event().

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

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.

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

Reimplemented from QAbstractTransition::onTransition().