QSignalTransition 类

QSignalTransition 类基于 Qt 信号提供转换。 更多...

头文件 #include <QSignalTransition>
CMakefind_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmakeQT += statemachine
继承 QAbstractTransition

属性

公共函数

QSignalTransition(QState *sourceState = nullptr)
QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)
QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr)
virtual~QSignalTransition()
QBindable<const QObject *>bindableSenderObject()
QBindable<QByteArray>bindableSignal()
const QObject *senderObject() const
voidsetSenderObject(const QObject *sender)
voidsetSignal(const QByteArray &signal)
QByteArraysignal() const

信号

重写受保护的函数

virtual boolevent(QEvent *e) override
virtual booleventTest(QEvent *event) override
virtual voidonTransition(QEvent *event) override

详细描述

通常,您会使用接受发送者和信号作为参数的 QState::addTransition() 重载,而不是直接创建 QSignalTransition 对象。QSignalTransition 是 Qt 状态机框架的一部分。

您可以通过扩展 QSignalTransition 并重新实现 eventTest() 来使信号转换条件化;传递给 eventTest() 的事件对象将是一个 QStateMachine::SignalEvent 对象。示例

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

属性文档

[bindable] senderObject : const QObject*

注意:此属性支持QProperty绑定。

此属性保存与该信号转换关联的发送者对象。

[可绑定] signal : QByteArray

注意:此属性支持QProperty绑定。

此属性保存与该信号转换关联的信号。

成员函数文档

QSignalTransition::QSignalTransition(QState *sourceState = nullptr)

使用给定的sourceState构造一个新的信号转换。

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

使用给定的sender对象的给定signal和给定的sourceState构造一个新的信号转换。

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

这是一个过载函数。

使用给定的sender对象的给定signal和给定的sourceState构造一个新的信号转换。如果编译器支持委托构造函数(如宏Q_COMPILER_DELEGATING_CONSTRUCTORS的存在所示),则启用此构造函数。

[虚拟 noexcept] QSignalTransition::~QSignalTransition()

销毁此信号转换。

[覆盖虚拟受保护] bool QSignalTransition::event(QEvent *e)

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

[覆盖虚拟受保护] bool QSignalTransition::eventTest(QEvent *event)

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

默认实现:如果eventQStateMachine::SignalEvent对象,且事件发送者和信号索引与该转换匹配,则返回true,否则返回false

[覆盖虚拟受保护] void QSignalTransition::onTransition(QEvent *event)

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

const QObject *QSignalTransition::senderObject() const

返回与该信号转换关联的发送者对象。

注意:senderObject属性的获取函数。

另请参阅:setSenderObject()。

[私有信号] void QSignalTransition::senderObjectChanged()

当发送者对象属性发生改变时,会发出此信号。

注意:这是一个私有信号。它可以用于信号连接,但不能被用户发出。

注意:属性的发送者对象通知信号。

另请参阅:QSignalTransition::senderObject

void QSignalTransition::setSenderObject(const QObject *sender)

设置与此信号转换相关的sender对象。

注意:属性senderObject的设置函数。

另请参阅:senderObject

void QSignalTransition::setSignal(const QByteArray &signal)

设置与此信号转换相关的signal

注意:属性signal的设置函数。

另请参阅:signal

QByteArray QSignalTransition::signal() const

返回与此信号转换相关的信号。

注意:signal属性的获取函数。

另请参阅:setSignal

[私有信号] void QSignalTransition::signalChanged()

当信号属性发生改变时发出此信号。

注意:这是一个私有信号。它可以用于信号连接,但不能被用户发出。

注意:属性signal的通知信号。

另请参阅:QSignalTransition::signal

© 2024 Qt公司。本文档中的文档贡献权归各自所有者。本文档根据自由软件基金会发布的GNU自由文档许可证第1.3版的条款进行许可。Qt及其标志是芬兰等的Qt公司的商标。所有其他商标均为各自所有者的财产。