Any 类

class QtProtobuf::Any

一个辅助类,用于简化使用 protobuf Any 类型的工作。 更多...

头文件 #include <Any>
CMakefind_package(Qt6 REQUIRED COMPONENTS ProtobufWellKnownTypes)
target_link_libraries(mytarget PRIVATE Qt6::ProtobufWellKnownTypes)
qmakeQT += protobufwellknowntypes
Qt 6.6
继承自 QProtobufMessage
状态技术预览

公共函数

Any()
Any(const QtProtobuf::Any &other)
~Any()
std::optional<T>as(QAbstractProtobufSerializer *serializer) const
voidsetTypeUrl(const QString &typeUrl)
voidsetValue(const QByteArray &value)
QStringtypeUrl() const
QByteArrayvalue() const
QtProtobuf::Any &operator=(const QtProtobuf::Any &other)

静态公共成员

QtProtobuf::AnyfromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix = defaultUrlPrefix())
booloperator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
booloperator==(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属性的获取函数。

另请参阅:setValue()和typeUrl()。

QtProtobuf::Any &Any::operator=(const QtProtobuf::Any &other)

other的数据复制到此实例中。

相关非成员功能

[noexcept] bool operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)

如果 Any 实例 lhsrhs 是不同的,则返回 true。

[noexcept] bool operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)

如果 Any 实例 lhsrhs 比较相等,则返回 true。

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献属于其各自所有者的版权。本提供的文档根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款进行许可。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。