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는 타입을 분해하기 위한 잠재적인 레시피를 동적으로 얻는 기능을 지원하지 않으며, 단순히 타입 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-construct로 생성합니다.
[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는 타입을 분해하는 데 사용될 수 있는 잠재적인 레시피를 동적으로 가져오는 기능을 지원하지 않으며, 단순히 타입 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()을 참조하십시오.
참고: 속성 값에 대한게터 함수입니다.
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의 두 인스턴스인 lhs 와 rhs 가 서로 다른 경우 true를 반환합니다.
[noexcept] bool operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
Any의 두 인스턴스인 ` 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.