QSignalTransition Class
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 State Machine 框架的一部分。
您可以继承 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 绑定。
该属性保存与该信号状态转换相关联的发送者对象
访问函数:
| const QObject * | senderObject() const |
| void | setSenderObject(const QObject *sender) |
通知器信号:
| void | senderObjectChanged() | [see note below] |
注意:这是一个 私有信号。它可在信号连接中使用,但用户无法发出该信号。
[bindable] signal : QByteArray
注意:此 属性支持QProperty 绑定。
该属性保存与该信号状态转换相关联的信号
访问函数:
通知信号:
| void | signalChanged() | [see note below] |
注意:这是一个 私有信号。它可用于信号连接,但用户无法发出该信号。
成员函数文档
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
返回与该信号跳变相关的信号。
注意: 这是 signal 属性的获取 函数。
另请参阅 setSignal()。
[private signal] void QSignalTransition::signalChanged()
当信号属性发生变化时,会发出此信号。
注意:这是一个 私有信号。它可以在信号连接中使用,但用户无法触发它。
注意: 这是属性 `signal`的通知器 信号。
另请参阅 QSignalTransition::signal 。
© 2026 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.