本页内容

QScxmlEvent Class

QScxmlEvent 类是Qt SCXML 状态机的一个事件。更多内容...

头文件: #include <QScxmlEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Scxml)
target_link_libraries(mytarget PRIVATE Qt6::Scxml)
qmake: QT += scxml

公共类型

enum EventType { PlatformEvent, InternalEvent, ExternalEvent }

属性

公共函数

QScxmlEvent()
QScxmlEvent(const QScxmlEvent &other)
~QScxmlEvent()
void clear()
QVariant data() const
int delay() const
QString errorMessage() const
QScxmlEvent::EventType eventType() const
QString invokeId() const
bool isErrorEvent() const
QString name() const
QString origin() const
QString originType() const
QString scxmlType() const
QString sendId() const
void setData(const QVariant &data)
void setDelay(int delayInMiliSecs)
void setErrorMessage(const QString &message)
void setEventType(const QScxmlEvent::EventType &type)
void setInvokeId(const QString &invokeid)
void setName(const QString &name)
void setOrigin(const QString &origin)
void setOriginType(const QString &origintype)
void setSendId(const QString &sendid)
QScxmlEvent &operator=(const QScxmlEvent &other)

详细说明

SCXML事件驱动状态转换。大多数事件是通过在应用程序中使用<raise> 和<send> 元素生成的。状态机还会自动生成一些必备事件,例如错误事件。

有关详细信息,请参阅《SCXML 规范》第 5.10.1 节“事件的内部结构”。有关Qt SCXML API 与规范之间的差异,请参阅《SCXML 合规性》。

另请参阅 QScxmlStateMachine 。

成员类型文档

enum QScxmlEvent::EventType

此枚举类型指定了 SCXML 事件的类型:

常量值描述
QScxmlEvent::PlatformEvent0由状态机内部生成的事件。例如,错误。
QScxmlEvent::InternalEvent1由<raise> 元素生成的事件。
QScxmlEvent::ExternalEvent2由<send> 元素生成的事件。

属性文档

data : QVariant

该属性包含发件人提供的数据。

当在<send> 元素中使用<param> 元素时,数据将包含一个QVariantMap ,其中键为name属性,值则取自expr属性或location属性。

当使用<content> 元素时,数据将包含一个单独的项目,其值为<content> 元素的expr属性的值,或<content> 元素的子数据。

访问函数:

QVariant data() const
void setData(const QVariant &data)

delay : int

该属性存储在处理完<send> 元素后,事件被发送前的延迟时间(以毫秒为单位)。

访问函数:

int delay() const
void setDelay(int delayInMiliSecs)

[read-only] errorEvent : bool

该属性表示该事件是否为错误。

访问函数:

bool isErrorEvent() const

errorMessage : QString

该属性存储了错误事件的错误消息,或者是一个空的QString 。

访问函数:

QString errorMessage() const
void setErrorMessage(const QString &message)

eventType : EventType

该属性存储事件的类型。

访问函数:

QScxmlEvent::EventType eventType() const
void setEventType(const QScxmlEvent::EventType &type)

invokeId : QString

如果该事件是由状态机触发的,则此属性存储所调用状态机的 ID。

访问函数:

QString invokeId() const
void setInvokeId(const QString &invokeid)

name : QString

该属性存储事件的名称。

如果事件是在 SCXML 文档内部生成的,则该属性将包含在<raise> 或<send> 元素中指定的事件属性的值。

如果事件是在 C++ 代码中创建并提交到QScxmlStateMachine 的,则该属性的值将与 SCXML 文档中<transition> 元素内指定的事件属性的值进行匹配。

访问函数:

QString name() const
void setName(const QString &name)

origin : QString

该属性存储指向 SCXML 事件源的 URI。

该源与<send> 元素的target属性等效。

访问函数:

QString origin() const
void setOrigin(const QString &origin)

originType : QString

该属性存储 SCXML 事件的源类型。

源类型等同于<send> 元素的type属性。

访问函数:

QString originType() const
void setOriginType(const QString &origintype)

[read-only] scxmlType : QString

该属性存储事件类型。

访问函数:

QString scxmlType() const

sendId : QString

该属性存储事件的 ID。

<cancel> 元素使用该ID来标识待取消的事件。

注意: 如果<send> 元素中未指定id属性,状态机 将生成一个唯一的ID。可以通过此属性访问生成的ID。

访问函数:

QString sendId() const
void setSendId(const QString &sendid)

成员函数文档

QScxmlEvent::QScxmlEvent()

创建一个新的外部 SCXML 事件。

QScxmlEvent::QScxmlEvent(const QScxmlEvent &other)

创建other 的副本。

[noexcept] QScxmlEvent::~QScxmlEvent()

销毁 SCXML 事件。

[invokable] void QScxmlEvent::clear()

清除事件的内容。

注意: 可通过元对象系统或从 QML 中调用此 函数。参见Q_INVOKABLE 。

QVariant QScxmlEvent::data() const

返回发件人包含的数据。

注意: 这是属性 data 的获取 函数。

另请参阅 setData()。

int QScxmlEvent::delay() const

返回在处理完<send> 元素后,该事件应被分发的延迟时间(以毫秒为单位)。

注意: 这是 delay 属性的获取 函数。

另请参阅 setDelay()。

QString QScxmlEvent::errorMessage() const

如果这是错误事件,则返回错误消息。否则,返回一个空的QString 。

注意: 这是 errorMessage 属性的获取 函数。

另请参阅 setErrorMessage()。

QScxmlEvent::EventType QScxmlEvent::eventType() const

返回此事件的类型。

注意: 这是 eventType 属性的获取 函数。

另请参阅 setEventType() 和QScxmlEvent::EventType 。

QString QScxmlEvent::invokeId() const

如果此事件是由被调用的状态机触发的,则返回<invoke> 元素的ID。否则,返回空值。

注意: 这是属性 invokeId 的获取 函数。

另请参阅 setInvokeId()。

bool QScxmlEvent::isErrorEvent() const

当此为错误事件时返回true ,否则返回false 。

注意: 这是属性errorEvent 的获取器 函数。

QString QScxmlEvent::name() const

返回事件的名称。

注意: 该函数是 property name 的获取器 。

另请参阅 ` setName()`。

QString QScxmlEvent::origin() const

返回一个指向 SCXML 事件源的 URI。

注意: 这是 origin 属性的获取 函数。

另请参阅 setOrigin()。

QString QScxmlEvent::originType() const

返回 SCXML 事件的源类型。

注意: 这是 originType 属性的获取 函数。

另请参阅 setOriginType()。

QString QScxmlEvent::scxmlType() const

返回事件类型。

注意: 这是属性 scxmlType的获取 函数。

QString QScxmlEvent::sendId() const

返回该事件的 ID。

注意: 这是 sendId 属性的获取 函数。

另请参阅 setSendId()。

void QScxmlEvent::setData(const QVariant &data)

将有效载荷数据设置为data 。

注意: 这是属性data 的设置 函数。

另请参阅 QScxmlEvent::data 。

void QScxmlEvent::setDelay(int delayInMiliSecs)

将以毫秒为单位的延迟时间设置为属性delayInMiliSecs 的值。

注意: 这是属性delay 的设置 函数。

另请参阅 QScxmlEvent::delay 。

void QScxmlEvent::setErrorMessage(const QString &message)

如果这是个错误事件,则将message 设置为错误消息。

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

另请参阅 errorMessage()。

void QScxmlEvent::setEventType(const QScxmlEvent::EventType &type)

将事件类型设置为type 。

注意: 这是属性 `eventType`的设置 函数。

另请参阅 QScxmlEvent::eventType 和QScxmlEvent::EventType 。

void QScxmlEvent::setInvokeId(const QString &invokeid)

将被调用的状态机的 ID 设置为invokeid 。

注意: 这是属性 `invokeId`的设置器 函数。

另请参阅 QScxmlEvent::invokeId 。

void QScxmlEvent::setName(const QString &name)

将事件名称设置为name 。

注意: 这是属性name 的设置 函数。

另请参阅 name()。

void QScxmlEvent::setOrigin(const QString &origin)

将 SCXML 事件的源设置为origin 。

注意: 这是属性origin 的设置 函数。

另请参阅 QScxmlEvent::origin 。

void QScxmlEvent::setOriginType(const QString &origintype)

将 SCXML 事件的源类型设置为origintype 。

注意: 这是属性originType 的设置 函数。

另请参阅 QScxmlEvent::originType 。

void QScxmlEvent::setSendId(const QString &sendid)

为该事件设置 IDsendid 。

注意: 这是属性sendId 的设置 函数。

另请参阅 sendId()。

QScxmlEvent &QScxmlEvent::operator=(const QScxmlEvent &other)

将other 分配给此SCXML事件,并返回对此SCXML事件的引用。

© 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.