QSignalTransition Class

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

头: #include <QSignalTransition>
qmake: QT += core
Since: Qt 4.6
继承: QAbstractTransition

该类在 Qt 4.6 引入。

特性

公共函数

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

信号

void senderObjectChanged ()
void signalChanged ()

重实现保护函数

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

详细描述

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 状态机框架 .

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);
					

特性文档编制

senderObject : QObject *

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

访问函数:

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

通知程序信号:

void senderObjectChanged () [see note below]

注意: 这是私有信号。它可以用于信号连接,但不能由用户发射。

signal : QByteArray

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

访问函数:

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

通知程序信号:

void signalChanged () [see note below]

注意: 这是私有信号。它可以用于信号连接,但不能由用户发射。

成员函数文档编制

template <typename PointerToMemberFunction> QSignalTransition:: QSignalTransition (const QObject * sender , PointerToMemberFunction signal , QState * sourceState = nullptr)

这是重载函数。

Constructs a new signal transition associated with the given signal 为给定 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.

该函数在 Qt 5.7 引入。

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

Constructs a new signal transition associated with the given signal 为给定 sender ,和采用给定 sourceState .

QSignalTransition:: QSignalTransition ( QState * sourceState = nullptr)

Constructs a new signal transition with the given sourceState .

[signal] void QSignalTransition:: senderObjectChanged ()

此信号被发射当 senderObject 特性改变。

注意: 这是私有信号。它可以用于信号连接,但不能由用户发射。

注意: 通知程序信号对于特性 senderObject .

该函数在 Qt 5.4 引入。

另请参阅 QSignalTransition::senderObject .

[signal] void QSignalTransition:: signalChanged ()

This signal is emitted when the signal property is changed.

注意: 这是私有信号。它可以用于信号连接,但不能由用户发射。

注意: 通知程序信号对于特性 signal .

该函数在 Qt 5.4 引入。

另请参阅 QSignalTransition::signal .

[virtual] QSignalTransition:: ~QSignalTransition ()

Destroys this signal transition.

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

重实现: QAbstractTransition::event (QEvent *e).

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

重实现: QAbstractTransition::eventTest (QEvent *event).

默认实现返回 true event QStateMachine::SignalEvent object and the event's sender and signal index match this transition, and returns false 否则。

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

重实现: QAbstractTransition::onTransition (QEvent *event).

QObject *QSignalTransition:: senderObject () const

Returns the sender object associated with this signal transition.

注意: Getter function for property senderObject.

另请参阅 setSenderObject ().

void QSignalTransition:: setSenderObject (const QObject * sender )

设置 sender object associated with this signal transition.

注意: Setter 函数对于特性 senderObject .

另请参阅 senderObject ().

void QSignalTransition:: setSignal (const QByteArray & signal )

设置 signal associated with this signal transition.

注意: Setter 函数对于特性 signal .

另请参阅 signal ().

QByteArray QSignalTransition:: signal () const

Returns the signal associated with this signal transition.

注意: Getter function for property signal.

另请参阅 setSignal ().