QSignalTransition 类
QSignalTransition 类基于 Qt 信号提供转换。 更多...
头文件 | #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 状态机框架的一部分。
您可以通过扩展 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).
默认实现:如果event是QStateMachine::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的通知信号。
© 2024 Qt公司。本文档中的文档贡献权归各自所有者。本文档根据自由软件基金会发布的GNU自由文档许可证第1.3版的条款进行许可。Qt及其标志是芬兰等的Qt公司的商标。所有其他商标均为各自所有者的财产。