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
- senderObject : QObject *
- signal : QByteArray
- 3 properties inherited from QAbstractTransition
- 1 property inherited from QObject
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 |
- 9 public functions inherited from QAbstractTransition
- 31 public functions inherited from QObject
Signals
void | senderObjectChanged() |
void | signalChanged() |
- 3 signals inherited from QAbstractTransition
- 2 signals inherited from QObject
Reimplemented Protected Functions
virtual bool | event(QEvent * e) |
virtual bool | eventTest(QEvent * event) |
virtual void | onTransition(QEvent * event) |
- 3 protected functions inherited from QAbstractTransition
- 9 protected functions inherited from QObject
Additional Inherited Members
- 1 public slot inherited from QObject
- 11 static public members inherited from QObject
- 3 protected functions inherited from QAbstractTransition
- 9 protected functions inherited from QObject
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() |
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() |
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.
[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().
© 2015 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.