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. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。