本页内容

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::Unknown0消息状态未知。
QMqtt::MessageStatus::Published1客户端接收到了其某项订阅的消息。这适用于 QoS 级别 1 和 2。
QMqtt::MessageStatus::Acknowledged2已确认一条消息。这适用于 QoS 1,表示客户端已完成对该消息的处理。
QMqtt::MessageStatus::Received3已收到一条消息。这适用于 QoS 2。
QMqtt::MessageStatus::Released4已释放一条消息。这适用于 QoS 2。对于发布者而言,消息处理已完成。
QMqtt::MessageStatus::Completed5消息已处理完成。这适用于 QoS 2,表示客户端已完成对该消息的处理。

enum class QMqtt::PayloadFormatIndicator

有效载荷格式提供了有关消息内容的信息。这有助于其他客户端更快地处理该消息。

常量值描述
QMqtt::PayloadFormatIndicator::Unspecified0格式未指定。
QMqtt::PayloadFormatIndicator::UTF8Encoded1消息的有效载荷采用 UTF-8 编码字符数据格式。

enum class QMqtt::ReasonCode

此枚举类型指定了可用的错误代码。

常量值描述
QMqtt::ReasonCode::Success0指定的操作已成功。
QMqtt::ReasonCode::SubscriptionQoSLevel00已创建一个 QoS 级别为 0 的订阅。
QMqtt::ReasonCode::SubscriptionQoSLevel10x01已创建一个 QoS 级别为 1 的订阅。
QMqtt::ReasonCode::SubscriptionQoSLevel20x02已创建一个 QoS 级别为 2 的订阅。
QMqtt::ReasonCode::NoMatchingSubscriber0x10该消息已被服务器接受,但没有订阅者接收此消息。代理可能会发送此原因代码,而不是“成功”。
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::UnspecifiedError0x80发生未指定的错误。
QMqtt::ReasonCode::MalformedPacket0x81发送到服务器的数据包无效。
QMqtt::ReasonCode::ProtocolError0x82发生协议错误。在大多数情况下,这将导致服务器断开与客户端的连接。
QMqtt::ReasonCode::ImplementationSpecificError0x83数据包有效,但接收方拒绝了它。
QMqtt::ReasonCode::UnsupportedProtocolVersion0x84服务器不支持所请求的协议版本。
QMqtt::ReasonCode::InvalidClientId0x85客户端 ID 无效。
QMqtt::ReasonCode::InvalidUserNameOrPassword0x86指定的用户名或密码无效。
QMqtt::ReasonCode::NotAuthorized0x87客户端无权执行指定的操作。
QMqtt::ReasonCode::ServerNotAvailable0x88要连接的服务器不可用。
QMqtt::ReasonCode::ServerBusy0x89要连接的服务器不可用。请客户端稍后再试。
QMqtt::ReasonCode::ClientBanned0x8A该客户端已被服务器禁止访问。
QMqtt::ReasonCode::InvalidAuthenticationMethod0x8C指定的身份验证方法无效。
QMqtt::ReasonCode::InvalidTopicFilter0x8F指定的主题过滤器无效。
QMqtt::ReasonCode::InvalidTopicName0x90指定的主题名无效。
QMqtt::ReasonCode::MessageIdInUse0x91上一数据包中使用的消息 ID 已被占用。
QMqtt::ReasonCode::MessageIdNotFound0x92未找到上一个数据包中使用的消息 ID。
QMqtt::ReasonCode::PacketTooLarge0x95接收到的数据包过大。另请参阅QMqttServerConnectionProperties::maximumPacketSize()。
QMqtt::ReasonCode::QuotaExceeded0x97已超过管理层设定的限制。
QMqtt::ReasonCode::InvalidPayloadFormat0x99有效载荷格式无效。另请参阅QMqttPublishProperties::payloadFormatIndicator()。
QMqtt::ReasonCode::RetainNotSupported0x9A服务器不支持保留消息。另请参阅QMqttServerConnectionProperties::retainAvailable()。
QMqtt::ReasonCode::QoSNotSupported0x9B请求的 QoS 级别不受支持。另请参阅QMqttServerConnectionProperties::maximumQoS()。
QMqtt::ReasonCode::UseAnotherServer0x9C客户端尝试连接的服务器不可用。另请参阅QMqttServerConnectionProperties::serverReference()。
QMqtt::ReasonCode::ServerMoved0x9D客户端尝试连接的服务器已迁移至新地址。另请参阅QMqttServerConnectionProperties::serverReference()。
QMqtt::ReasonCode::SharedSubscriptionsNotSupported0x9E不支持共享订阅。另请参阅QMqttServerConnectionProperties::sharedSubscriptionSupported()。
QMqtt::ReasonCode::ExceededConnectionRate0x9F已超过连接速率限制。
QMqtt::ReasonCode::SubscriptionIdsNotSupported0xA1不支持订阅 ID。另请参阅QMqttServerConnectionProperties::subscriptionIdentifierSupported()。
QMqtt::ReasonCode::WildCardSubscriptionsNotSupported0xA2服务器不支持使用通配符的订阅。另请参阅QMqttServerConnectionProperties::wildcardSupported()。

并非所有值在所有用例中都可用。特别是,某些服务器会拒绝不适用于特定命令的原因代码。请参阅下表,了解特定操作的预期原因代码。

原因代码连接属性订阅属性消息属性
成功XXX
订阅QoS级别0X
订阅QoS级别1X
订阅QoS级别2X
无匹配订阅者X
未指定错误XXX
数据包格式错误X
协议错误X
实现特定错误XXX
不支持的协议版本X
无效的客户端IDX
用户名或密码无效X
未授权XXX
服务器不可用X
服务器繁忙X
客户端被封禁X
身份验证方法无效X
主题过滤器无效X
主题名称无效XX
MessageIdInUseXX
消息ID未找到X
数据包过大X
配额已满XXX
有效载荷格式无效XX
不支持保留X
不支持QoSX
使用其他服务器X
服务器已迁移X
不支持共享订阅X
连接速率超限X
不支持订阅IDX
不支持通配符订阅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.