Any 类
class QtProtobuf::Any一个辅助类,用于简化使用 protobuf Any 类型的工作。 更多...
| 头文件 | #include <Any> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS ProtobufWellKnownTypes) target_link_libraries(mytarget PRIVATE Qt6::ProtobufWellKnownTypes) | 
| qmake | QT += protobufwellknowntypes | 
| 自 | Qt 6.6 | 
| 继承自 | QProtobufMessage | 
| 状态 | 技术预览 | 
公共函数
| Any() | |
| Any(const QtProtobuf::Any &other) | |
| ~Any() | |
| std::optional<T> | as(QAbstractProtobufSerializer *serializer) const | 
| void | setTypeUrl(const QString &typeUrl) | 
| void | setValue(const QByteArray &value) | 
| QString | typeUrl() const | 
| QByteArray | value() const | 
| QtProtobuf::Any & | operator=(const QtProtobuf::Any &other) | 
静态公共成员
| QtProtobuf::Any | fromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix = defaultUrlPrefix()) | 
相关非成员
| bool | operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs) | 
| bool | operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs) | 
详细描述
Any 类使用 as() 和 fromMessage() 简单地实现了到其他类型的转换。
这是由 qtprotobufgen 生成的代码在消息包含 google.protobuf.Any 类型的字段时使用的类型。
成员函数文档
Any::Any()
构造一个默认的、空的 Any 实例。
Any::Any(const QtProtobuf::Any &other)
构造一个 other 的副本。
[noexcept] Any::~Any()
销毁 Any 实例
template <typename T> std::optional<T> Any::as(QAbstractProtobufSerializer *serializer) const
此函数在使用序列化器serializer反序列化数据之前,会将T的消息名称与typeUrl()的值进行比较。
如果验证或反序列化失败,它将返回std::nullopt。
注意:T必须是从QProtobufMessage派生出来的类,并使用Q_PROTOBUF_OBJECT宏,或者(对于嵌套的Any消息)自身就是Any。
[静态]模板 <typename T> QtProtobuf::Any Any::fromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix = defaultUrlPrefix())
此函数将给定的message序列化为返回的Any实例的值。此实例的typeUrl()由一个前缀、一个正斜杠和从T::propertyOrdering.getMessageFullName()使用serializer获取的消息名称构建。如果提供了typeUrlPrefix,则使用它作为前缀,否则使用"type.googleapis.com"。
注意:T必须是从QProtobufMessage派生出来的类,并使用Q_PROTOBUF_OBJECT宏,或者(对于嵌套的Any消息)自身就是Any。
void Any::setTypeUrl(const QString &typeUrl)
将数据包含的类型URL设置为typeUrl。
注意:不会对输入进行验证,以检查其是否正确或格式有效。
注意:设置typeUrl属性的设置函数。
另请参阅:typeUrl()和fromMessage()。
void Any::setValue(const QByteArray &value)
将存储的值的原始字节数组设置为value。
value必须是序列化一条消息的输出。
注意:value属性的设置函数。
另请参阅:value()和fromMessage()。
QString Any::typeUrl() const
返回Any对象的类型URL。URL用作提示,说明包含的数据到底是什么。
注意:Qt没有支持动态获取任何可能的类型解构配方,它只是使用类型URL来验证传递给as<T>()的T类型是否正确。
注意:typeUrl属性的获取函数。
另请参阅:setTypeUrl()和value()。
QByteArray Any::value() const
返回构成存储值的原始字节的数组。
请参阅typeUrl()以确定如何解释这些字节。
注意:value属性的获取函数。
QtProtobuf::Any &Any::operator=(const QtProtobuf::Any &other)
将other的数据复制到此实例中。
相关非成员功能
[noexcept] bool operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
如果 Any 实例 lhs 和 rhs 是不同的,则返回 true。
[noexcept] bool operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
如果 Any 实例 lhs 和 rhs 比较相等,则返回 true。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献属于其各自所有者的版权。本提供的文档根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款进行许可。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。