QMqttTopicFilter Class
QMqttTopicFilter 类表示一个 MQTT 主题过滤器。更多...
| 头文件: | #include <QMqttTopicFilter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Mqtt) target_link_libraries(mytarget PRIVATE Qt6::Mqtt) |
| qmake: | QT += mqtt |
- 所有成员的列表,包括继承的成员
- QMqttTopicFilter 属于“隐式共享类”。
注意:该类中的所有函数均为可重入的。
公共类型
| 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 。
成员类型文档
enum QMqttTopicFilter::MatchOption
flags QMqttTopicFilter::MatchOptions
此枚举值包含主题过滤器的匹配选项。
| 常量 | 值 | 描述 |
|---|---|---|
QMqttTopicFilter::NoMatchOption | 0x0000 | 未设置任何匹配选项。 |
QMqttTopicFilter::WildcardsDontMatchDollarTopicMatchOption | 0x0001 | 过滤器开头的通配符不会匹配以美元符号 ($) 开头的主题名称。 |
MatchOptions 类型是QFlags<MatchOption> 的 typedef。它存储 MatchOption 值的“或”组合。
成员函数文档
QMqttTopicFilter::QMqttTopicFilter(const QLatin1String &filter)
创建一个新的MQTT主题过滤器,其filter 为指定值。
QMqttTopicFilter::QMqttTopicFilter(const QString &filter = QString())
创建一个新的 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
如果主题过滤器匹配主题名称name 且符合给定的matchOptions ,则返回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)
如果主题过滤器lhs 和rhs 不同,则返回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)
如果主题过滤器lhs 和rhs 相等,则返回true ;否则返回false 。
QDataStream &operator>>(QDataStream &in, QMqttTopicFilter &filter)
从流in 将主题过滤器读取到filter 中,并返回该流的引用。
另请参阅 QDataStream 运算符的格式。
© 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.