QtProtobuf::Any Class
class QtProtobuf::AnyProtobufのAny型を扱う作業を簡略化するヘルパークラスです。詳細...
| ヘッダー: | #include <qprotobufanysupport.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS ProtobufWellKnownTypes) target_link_libraries(mytarget PRIVATE Qt6::ProtobufWellKnownTypes) |
| qmake: | QT += protobufwellknowntypes |
| 以下のように: | Qt 6.6 |
| 継承元: | QProtobufMessage |
QtProtobuf::Any の比較
| カテゴリ | 比較可能な型 |
|---|---|
| 等価性 | QtProtobuf::Any |
プロパティ
パブリック関数
| Any() | |
| Any(const QtProtobuf::Any &other) | |
| Any(QtProtobuf::Any &&other) | |
| ~Any() | |
| void | setTypeUrl(const QString &typeUrl) |
| void | setValue(const QByteArray &value) |
| QString | typeUrl() const |
| std::optional<T> | unpack(QAbstractProtobufSerializer *serializer) const |
| QByteArray | value() const |
| QtProtobuf::Any & | operator=(QtProtobuf::Any &&other) |
| QtProtobuf::Any & | operator=(const QtProtobuf::Any &other) |
静的パブリックメンバー
| QtProtobuf::Any | fromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix) |
関連する非メンバー
| bool | operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs) |
| bool | operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs) |
詳細な説明
Any クラスを使用すると、as() およびfromMessage() を使用して、他の型との間で簡単に型変換を行うことができます。
これは、メッセージにgoogle.protobuf.Any 型のフィールドが含まれている場合に、qtprotobufgenによって生成されるコードで使用される型です。
プロパティのドキュメント
typeUrl : QString
このプロパティは、Any オブジェクトの型 URL を保持します。この URL は、含まれるデータが実際には何であるかを示すヒントとして機能します。
注:Qtは 、型を分解するための潜在的なレシピを動的に取得する機能をサポートしておらず、単にtype URLを使用して、as<T>() にTとして渡された型が正しい型であるかどうかを検証します。
アクセス関数:
| QString | typeUrl() const |
| void | setTypeUrl(const QString &typeUrl) |
valueも参照してください 。
value : QByteArray
このプロパティには、Any オブジェクトに格納されている値を構成する生のバイトが保持されます。
これらのバイトの解釈方法については、typeUrl を参照してください。
アクセス関数:
「typeUrl」も参照してください 。
メンバ関数のドキュメント
Any::Any()
Any の初期化済みで空のインスタンスを作成します。
Any::Any(const QtProtobuf::Any &other)
other のコピーを作成します。
[constexpr noexcept default] Any::Any(QtProtobuf::Any &&other)
Any のインスタンスをMoveコンストラクタで生成します。
[noexcept] Any::~Any()
この Any のインスタンスを破棄します
[static] template <typename T> QtProtobuf::Any Any::fromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix)
この関数は、指定されたmessage を、返されるAnyインスタンスの値としてシリアライズします。このインスタンスのtypeUrl()は、プレフィックス、スラッシュ、およびQProtobufMessage::propertyOrdering からserializer を使用して取得したメッセージ名から構成されます。typeUrlPrefix が指定された場合はそれがプレフィックスとして使用され、指定されない場合は"type.googleapis.com" が使用されます。
注:T は 、Q_PROTOBUF_OBJECT マクロを使用してQProtobufMessage から派生したクラスであるか、あるいは(ネストされた 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では 、型を分解するための潜在的なレシピを動的に取得する機能はサポートされておらず、単にtype URLを使用して、as<T>() にTとして渡された型が正しい型であるかどうかを検証します。
注: プロパティ typeUrlのゲッター 関数です。
関連項目: setTypeUrl() およびvalue()。
template <typename T> std::optional<T> Any::unpack(QAbstractProtobufSerializer *serializer) const
この関数は、serializer を使用してデータをデシリアライズする前に、Tのメッセージ名とtypeUrl()の値を比較します。
検証またはデシリアライズに失敗した場合、std::nullopt を返します。
注:T は 、Q_PROTOBUF_OBJECT マクロを使用してQProtobufMessage から派生したクラスであるか、あるいは(ネストされた Any メッセージの場合は)Any 自体でなければなりません。
QByteArray Any::value() const
格納されている値を構成する生のバイトを返します。
これらのバイトの解釈方法については、typeUrl() を参照してください。
注: プロパティ valueのゲッター関数です 。
setValue() およびtypeUrl()も参照してください 。
[noexcept default] QtProtobuf::Any &Any::operator=(QtProtobuf::Any &&other)
other をこのAny インスタンスに割り当てます。
QtProtobuf::Any &Any::operator=(const QtProtobuf::Any &other)
other のデータをこのインスタンスにコピーします。
関連する非メンバー
[noexcept] bool operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
「Any」の 2 つのインスタンス、lhs とrhs が異なる場合、true を返します。
[noexcept] bool operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
「Any」の 2 つのインスタンス、lhs とrhs が等しい場合、true を返します。
© 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.