QSignalTransition Class
QSignalTransition 类提供基于 Qt 信号的转换。更多
Header: | #include <QSignalTransition> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
qmake: | QT += statemachine |
继承: | QAbstractTransition |
属性
- senderObject : const QObject*
- signal : QByteArray
公共功能
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 |
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 |
详细说明
通常情况下,您会使用QState::addTransition() 的重载,它将发送方和信号作为参数,而不是直接创建 QSignalTransition 对象。QSignalTransition 是Qt State Machine Framework 的一部分。
您可以子类化 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 绑定。
该属性包含与此信号转换相关联的发送方对象
[bindable]
signal : QByteArray
注: 该属性支持QProperty 绑定。
该属性保存与此信号转换相关联的信号
成员函数文档
QSignalTransition::QSignalTransition(QState *sourceState = nullptr)
用给定的sourceState 构建一个新的信号转换。
QSignalTransition::QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)
构建与给定signal 的给定sender 和给定sourceState 相关联的新信号转换。
template <typename PointerToMemberFunction> QSignalTransition::QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr)
这是一个重载函数。
构造一个与给定sender 对象的给定signal 和给定sourceState 相关联的新信号转换。如果编译器支持委托构造函数(如宏 Q_COMPILER_DELEGATING_CONSTRUCTORS 的存在),则该构造函数将被启用。
[virtual noexcept]
QSignalTransition::~QSignalTransition()
破坏该信号转换。
[override virtual protected]
bool QSignalTransition::event(QEvent *e)
重实现:QAbstractTransition::event(QEvent *e)。
[override virtual protected]
bool QSignalTransition::eventTest(QEvent *event)
重实现:QAbstractTransition::eventTest(QEvent *event)。
如果event 是QStateMachine::SignalEvent 对象,且事件的发送者和信号索引与此转换匹配,则默认实现返回true
,否则返回false
。
[override virtual protected]
void QSignalTransition::onTransition(QEvent *event)
重实现:QAbstractTransition::onTransition(QEvent *event).
const QObject *QSignalTransition::senderObject() const
返回与此信号转换相关的发送方对象。
注: 属性 senderObject 的获取函数。
另请参阅 setSenderObject().
[private signal]
void QSignalTransition::senderObjectChanged()
senderObject 属性发生变化时会发出该信号。
注意: 这是一个私有信号。可在信号连接中使用,但用户不能发出。
注: 属性senderObject 的通知信号。
另请参阅 QSignalTransition::senderObject 。
void QSignalTransition::setSenderObject(const QObject *sender)
设置与此信号转换相关的sender 对象。
注: 属性senderObject 的设置函数。
另请参阅 senderObject().
void QSignalTransition::setSignal(const QByteArray &signal)
设置与此信号转换相关的signal 。
注: 属性signal 的设置函数。
另请参阅 signal() 。
QByteArray QSignalTransition::signal() const
返回与此信号转换相关的信号。
注: 属性信号的获取函数。
另请参阅 setSignal().
[private signal]
void QSignalTransition::signalChanged()
当信号属性发生变化时发出该信号。
注意: 这是一个私有信号。可在信号连接中使用,但用户不能发出。
注: 用于属性signal 的通知信号。
另请参见 QSignalTransition::signal 。
© 2025 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.