QMqttTopicFilter Class

QMqttTopicFilter 类表示 MQTT 主题过滤器。更多

Header: #include <QMqttTopicFilter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Mqtt)
target_link_libraries(mytarget PRIVATE Qt6::Mqtt)
qmake: QT += mqtt

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

公共类型

enum MatchOption { NoMatchOption, WildcardsDontMatchDollarTopicMatchOption }
flags MatchOptions

公共函数

QMqttTopicFilter(const QLatin1String &filter)
QMqttTopicFilter(const QString &filter = QString())
QMqttTopicFilter(const QMqttTopicFilter &filter)
~QMqttTopicFilter()
QString filter() const
bool isValid() const
bool match(const QMqttTopicName &name, QMqttTopicFilter::MatchOptions matchOptions = NoMatchOption) const
void setFilter(const QString &filter)
QString sharedSubscriptionName() const
void swap(QMqttTopicFilter &other)
QMqttTopicFilter &operator=(const QMqttTopicFilter &filter)
bool operator!=(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)
bool operator<(const QMqttTopicFilter &lhs, const QMqttTopicFilter &rhs)
QDataStream &operator<<(QDataStream &out, const QMqttTopicFilter &filter)
bool operator==(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

成员类型文档

枚举 QMqttTopicFilter::MatchOption
flags QMqttTopicFilter::MatchOptions

此枚举值保存主题过滤器的匹配选项。

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

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

成员函数文档

QMqttTopicFilter::QMqttTopicFilter(const QLatin1String &filter)

使用指定的filter 创建新的 MQTT 主题过滤器。

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

使用指定的filter 创建新的 MQTT 主题过滤器。

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 操作符的格式

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