QMqtt Namespace
包含Qt MQTT 模块中各处使用的各种标识符。更多内容...
| 头文件: | #include <qmqttglobal.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Mqtt) target_link_libraries(mytarget PRIVATE Qt6::Mqtt) |
| qmake: | QT += mqtt |
类型
| enum class | MessageStatus { Unknown, Published, Acknowledged, Received, Released, Completed } |
| enum class | PayloadFormatIndicator { Unspecified, UTF8Encoded } |
| enum class | ReasonCode { Success, SubscriptionQoSLevel0, SubscriptionQoSLevel1, SubscriptionQoSLevel2, NoMatchingSubscriber, …, WildCardSubscriptionsNotSupported } |
类型文档
enum class QMqtt::MessageStatus
此枚举类型指定了消息的可用状态。根据客户端的 QoS 和角色不同,预期会出现不同的消息状态。
| 常量 | 值 | 描述 |
|---|---|---|
QMqtt::MessageStatus::Unknown | 0 | 消息状态未知。 |
QMqtt::MessageStatus::Published | 1 | 客户端接收到了其某项订阅的消息。这适用于 QoS 级别 1 和 2。 |
QMqtt::MessageStatus::Acknowledged | 2 | 已确认一条消息。这适用于 QoS 1,表示客户端已完成对该消息的处理。 |
QMqtt::MessageStatus::Received | 3 | 已收到一条消息。这适用于 QoS 2。 |
QMqtt::MessageStatus::Released | 4 | 已释放一条消息。这适用于 QoS 2。对于发布者而言,消息处理已完成。 |
QMqtt::MessageStatus::Completed | 5 | 消息已处理完成。这适用于 QoS 2,表示客户端已完成对该消息的处理。 |
enum class QMqtt::PayloadFormatIndicator
有效载荷格式提供了有关消息内容的信息。这有助于其他客户端更快地处理该消息。
| 常量 | 值 | 描述 |
|---|---|---|
QMqtt::PayloadFormatIndicator::Unspecified | 0 | 格式未指定。 |
QMqtt::PayloadFormatIndicator::UTF8Encoded | 1 | 消息的有效载荷采用 UTF-8 编码字符数据格式。 |
enum class QMqtt::ReasonCode
此枚举类型指定了可用的错误代码。
| 常量 | 值 | 描述 |
|---|---|---|
QMqtt::ReasonCode::Success | 0 | 指定的操作已成功。 |
QMqtt::ReasonCode::SubscriptionQoSLevel0 | 0 | 已创建一个 QoS 级别为 0 的订阅。 |
QMqtt::ReasonCode::SubscriptionQoSLevel1 | 0x01 | 已创建一个 QoS 级别为 1 的订阅。 |
QMqtt::ReasonCode::SubscriptionQoSLevel2 | 0x02 | 已创建一个 QoS 级别为 2 的订阅。 |
QMqtt::ReasonCode::NoMatchingSubscriber | 0x10 | 该消息已被服务器接受,但没有订阅者接收此消息。代理可能会发送此原因代码,而不是“成功”。 |
QMqtt::ReasonCode::NoSubscriptionExisted (since Qt 5.15) | 0x11 | 客户端未使用匹配的主题过滤器。 |
QMqtt::ReasonCode::ContinueAuthentication (since Qt 5.15) | 0x18 | 请执行另一个步骤继续身份验证。 |
QMqtt::ReasonCode::ReAuthenticate (since Qt 5.15) | 0x19 | 启动重新身份验证。 |
QMqtt::ReasonCode::UnspecifiedError | 0x80 | 发生未指定的错误。 |
QMqtt::ReasonCode::MalformedPacket | 0x81 | 发送到服务器的数据包无效。 |
QMqtt::ReasonCode::ProtocolError | 0x82 | 发生协议错误。在大多数情况下,这将导致服务器断开与客户端的连接。 |
QMqtt::ReasonCode::ImplementationSpecificError | 0x83 | 数据包有效,但接收方拒绝了它。 |
QMqtt::ReasonCode::UnsupportedProtocolVersion | 0x84 | 服务器不支持所请求的协议版本。 |
QMqtt::ReasonCode::InvalidClientId | 0x85 | 客户端 ID 无效。 |
QMqtt::ReasonCode::InvalidUserNameOrPassword | 0x86 | 指定的用户名或密码无效。 |
QMqtt::ReasonCode::NotAuthorized | 0x87 | 客户端无权执行指定的操作。 |
QMqtt::ReasonCode::ServerNotAvailable | 0x88 | 要连接的服务器不可用。 |
QMqtt::ReasonCode::ServerBusy | 0x89 | 要连接的服务器不可用。请客户端稍后再试。 |
QMqtt::ReasonCode::ClientBanned | 0x8A | 该客户端已被服务器禁止访问。 |
QMqtt::ReasonCode::InvalidAuthenticationMethod | 0x8C | 指定的身份验证方法无效。 |
QMqtt::ReasonCode::InvalidTopicFilter | 0x8F | 指定的主题过滤器无效。 |
QMqtt::ReasonCode::InvalidTopicName | 0x90 | 指定的主题名无效。 |
QMqtt::ReasonCode::MessageIdInUse | 0x91 | 上一数据包中使用的消息 ID 已被占用。 |
QMqtt::ReasonCode::MessageIdNotFound | 0x92 | 未找到上一个数据包中使用的消息 ID。 |
QMqtt::ReasonCode::PacketTooLarge | 0x95 | 接收到的数据包过大。另请参阅QMqttServerConnectionProperties::maximumPacketSize()。 |
QMqtt::ReasonCode::QuotaExceeded | 0x97 | 已超过管理层设定的限制。 |
QMqtt::ReasonCode::InvalidPayloadFormat | 0x99 | 有效载荷格式无效。另请参阅QMqttPublishProperties::payloadFormatIndicator()。 |
QMqtt::ReasonCode::RetainNotSupported | 0x9A | 服务器不支持保留消息。另请参阅QMqttServerConnectionProperties::retainAvailable()。 |
QMqtt::ReasonCode::QoSNotSupported | 0x9B | 请求的 QoS 级别不受支持。另请参阅QMqttServerConnectionProperties::maximumQoS()。 |
QMqtt::ReasonCode::UseAnotherServer | 0x9C | 客户端尝试连接的服务器不可用。另请参阅QMqttServerConnectionProperties::serverReference()。 |
QMqtt::ReasonCode::ServerMoved | 0x9D | 客户端尝试连接的服务器已迁移至新地址。另请参阅QMqttServerConnectionProperties::serverReference()。 |
QMqtt::ReasonCode::SharedSubscriptionsNotSupported | 0x9E | 不支持共享订阅。另请参阅QMqttServerConnectionProperties::sharedSubscriptionSupported()。 |
QMqtt::ReasonCode::ExceededConnectionRate | 0x9F | 已超过连接速率限制。 |
QMqtt::ReasonCode::SubscriptionIdsNotSupported | 0xA1 | 不支持订阅 ID。另请参阅QMqttServerConnectionProperties::subscriptionIdentifierSupported()。 |
QMqtt::ReasonCode::WildCardSubscriptionsNotSupported | 0xA2 | 服务器不支持使用通配符的订阅。另请参阅QMqttServerConnectionProperties::wildcardSupported()。 |
并非所有值在所有用例中都可用。特别是,某些服务器会拒绝不适用于特定命令的原因代码。请参阅下表,了解特定操作的预期原因代码。
| 原因代码 | 连接属性 | 订阅属性 | 消息属性 |
|---|---|---|---|
| 成功 | X | X | X |
| 订阅QoS级别0 | X | ||
| 订阅QoS级别1 | X | ||
| 订阅QoS级别2 | X | ||
| 无匹配订阅者 | X | ||
| 未指定错误 | X | X | X |
| 数据包格式错误 | X | ||
| 协议错误 | X | ||
| 实现特定错误 | X | X | X |
| 不支持的协议版本 | X | ||
| 无效的客户端ID | X | ||
| 用户名或密码无效 | X | ||
| 未授权 | X | X | X |
| 服务器不可用 | X | ||
| 服务器繁忙 | X | ||
| 客户端被封禁 | X | ||
| 身份验证方法无效 | X | ||
| 主题过滤器无效 | X | ||
| 主题名称无效 | X | X | |
| MessageIdInUse | X | X | |
| 消息ID未找到 | X | ||
| 数据包过大 | X | ||
| 配额已满 | X | X | X |
| 有效载荷格式无效 | X | X | |
| 不支持保留 | X | ||
| 不支持QoS | X | ||
| 使用其他服务器 | X | ||
| 服务器已迁移 | X | ||
| 不支持共享订阅 | X | ||
| 连接速率超限 | X | ||
| 不支持订阅ID | X | ||
| 不支持通配符订阅 | X |
© 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.