QMqttTopicFilter 类

QMqttTopicFilter 类表示一个 MQTT 主题过滤器。 更多信息...

头文件 #include <QMqttTopicFilter>
CMakefind_package(Qt6 REQUIRED COMPONENTS Mqtt)
target_link_libraries(mytarget PRIVATE Qt6::Mqtt)
qmakeQT += mqtt

注意: 此类中所有函数都是 可重入的

公共类型

枚举MatchOption { NoMatchOption, WildcardsDontMatchDollarTopicMatchOption }
标志MatchOptions

公共函数

QMqttTopicFilter(const QString &filter = QString())
QMqttTopicFilter(const QLatin1String &filter)
QMqttTopicFilter(const QMqttTopicFilter &filter)
~QMqttTopicFilter()
QStringfilter() const
boolisValid() const
boolmatch(const QMqttTopicName &name, QMqttTopicFilter::MatchOptions matchOptions = NoMatchOption) const
voidsetFilter(const QString &filter)
QStringsharedSubscriptionName() const
voidswap(QMqttTopicFilter &other)
QMqttTopicFilter &operator=(const QMqttTopicFilter &filter)
booloperator!=(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)
booloperator<(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)
QDataStream &operator<<(QDataStream &out, const QMqttTopicFilter &filter)
booloperator==(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)
QDataStream &operator>>(QDataStream &in, QMqttTopicFilter &filter)

详细描述

QMqttTopicFilter 在一个 QString 基础上提供了一个表示 MQTT 主题过滤器的类型。除了有类型强约束的好处,避免了未预期的错误使用外,QMqttTopicFilter 还提供了如 isValid() 或 match() 等与主题过滤器相关的便利函数。

例如,以下代码会编译失败,从而防止两个过滤器之间可能发生的未预期的、无意义匹配,特别是在变量名不具表达性时。

QMqttTopicFilter globalFilter{"foo/#"};
QMqttTopicFilter specificFilter{"foo/bar"};
if (globalFilter.match(specificFilter)) {
    //...
}

然而,易用性并未受到影响,因为以下代码片段按预期编译和运行

QMqttTopicFilter globalFilter{"foo/#"};
if (globalFilter.match("foo/bar")) {
    //...
}

另请参阅 QMqttTopicName.

成员类型文档

enum QMqttTopicFilter::MatchOption
flags QMqttTopicFilter::MatchOptions

此枚举值包含主题过滤器的匹配选项。

常量描述
QMqttTopicFilter::NoMatchOption0x0000未设置任何匹配选项。
QMqttTopicFilter::WildcardsDontMatchDollarTopicMatchOption0x0001在过滤器开头通配符不匹配以美元符号($)开头的主题名称。

MatchOptions 类型是 QFlags<MatchOption> 的别名。它存储 MatchOption 值的 OR 组合。

成员函数文档

QMqttTopicFilter::QMqttTopicFilter(const QString &filter = QString())

创建一个新的 MQTT 主题过滤器,其指定 filter

QMqttTopicFilter::QMqttTopicFilter(const QLatin1String &filter)

创建一个新的 MQTT 主题过滤器,其指定 filter

QMqttTopicFilter::QMqttTopicFilter(const QMqttTopicFilter &filter)

创建一个新的 MQTT 主题过滤器,作为 filter 的副本。

[noexcept] QMqttTopicFilter::~QMqttTopicFilter()

销毁 QMqttTopicFilter 对象。

QString QMqttTopicFilter::filter() const

返回主题过滤器。

另请参阅 setFilter().

bool QMqttTopicFilter::isValid() const

如果主题过滤器符合 MQTT 标准第 4.7 节,返回 true,否则返回 false

bool QMqttTopicFilter::match(const QMqttTopicName &name, QMqttTopicFilter::MatchOptions matchOptions = NoMatchOption) const

如果主题过滤器匹配给定 matchOptions 的主题名称 name,则返回 true,否则返回 false

void QMqttTopicFilter::setFilter(const QString &filter)

将主题过滤器设置为 filter

另请参阅 filter().

QString QMqttTopicFilter::sharedSubscriptionName() const

如果主题过滤器已指定为共享订阅,则返回共享订阅的名称。共享订阅的格式定义如下 $share/sharename/topicfilter

[noexcept] void QMqttTopicFilter::swap(QMqttTopicFilter &other)

交换 MQTT 主题过滤器 other 与此 MQTT 主题过滤器。此操作非常快并且永远不会失败。

QMqttTopicFilter &QMqttTopicFilter::operator=(const QMqttTopicFilter &filter)

将MQTT主题过滤器 filter 分配给此对象,并返回复制的引用。

相关非成员

[noexcept] bool operator!=(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)

如果主题过滤器 lhsrhs 不同,则返回 true,否则返回 false

[noexcept] bool operator<(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)

如果主题过滤器 lhs 在词法上小于主题过滤器 rhs,则返回 true;否则返回 false

QDataStream &operator<<(QDataStream &out, const QMqttTopicFilter &filter)

将主题过滤器 filter 写入流 out 并返回流的引用。

另请参见 QDataStream操作符的格式.

[noexcept] bool operator==(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)

如果主题过滤器 lhsrhs 相等,则返回 true,否则返回 false

QDataStream &operator>>(QDataStream &in, QMqttTopicFilter &filter)

从流 in 中读取主题过滤器到 filter 并返回流的引用。

另请参见 QDataStream操作符的格式.

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献是各自所有者的版权。在此提供的文档是根据自由软件基金会发布的 GNU自由文档许可证版本1.3 条款许可的。Qt及其相关徽标是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。