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

This class was introduced in Qt 4.6.

Properties

Public Functions

QObject *senderObject() const
void setSenderObject(const QObject *sender)
void setSignal(const QByteArray &signal)
QByteArray signal() const

Signals

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