이 페이지에서

Qt Protobuf

Qt Protobuf 생성기 플러그인은 .proto 파일에서 Qt 기반 클래스를 생성합니다. 이 클래스를 사용하여 관련 protobuf 메시지를 직렬화 및 역직렬화할 수 있습니다.

개요

프로토콜 버퍼란 무엇인가요?

프로토콜 버퍼는 구조화된 데이터를 직렬화하기 위한 언어 중립적, 플랫폼 중립적이며 확장 가능한 메커니즘으로, 간결하고 사용하기 쉽습니다:

  • 사용자는 .proto 파일에서 데이터의 구조를 정의합니다.
  • 빌드 시점에 .proto 파일을 대상으로 Proto 컴파일러가 호출되어 다양한 프로그래밍 언어로 된 코드가 생성됩니다.

제공되는 형식은 네트워크 트래픽이나 장기 데이터 저장에 적합합니다.

프로토콜 버퍼는 어떤 문제를 해결합니까?

프로토콜 버퍼는 크기가 최대 몇 메가바이트에 이르는 유형 지정 및 구조화된 데이터 패킷을 위한 직렬화 형식을 제공합니다. 이를 통해 기존 데이터를 무효화하거나 코드를 업데이트할 필요 없이 새로운 정보를 추가하여 확장할 수 있습니다. 자세한 내용은 프로토콜 버퍼 개요를 참조하십시오.

사용의 이점 Qt Protobuf

모든 Qt 기반 프로젝트에서 프로토콜 버퍼 메커니즘을 사용할 수 있습니다:

  • 프로토콜 버퍼 컴파일러를 명시적으로 호출할 필요 없이
  • 생성된 코드를 프로젝트 트리에 수동으로 통합할 필요 없이
  • 직렬화 및 역직렬화 API에 액세스할 수 있습니다.
  • 생성된 Protobuf 메시지를 위한 통합 속성 메커니즘을 사용할 수 있습니다.
  • 통합된 gRPC 클라이언트 지원에 대해서는 Qt GRPC 모듈을 참조하십시오.
  • 생성된 프로토버프 메시지에 대한 통합 QML 유형 지원.
  • 활성화된 기능을 사용하려면 Qt Core 및 Qt GUI 유형을 *.proto 스키마의 일부로 사용하는 방법에 대해서는

모듈 사용

Google 프로토콜 버퍼는 확장을 지원하는 protoc 라는 생성기를 제공합니다. qtprotobufgen 도구는 protoc 의 확장 기능이며, 호스트 시스템에 protoc 를 설치해야 합니다. 설치에 대한 자세한 내용은 Protoc 설치 문서를 참조하십시오.

QML API

이 모듈의 QML 타입은 qt_add_protobuf() 매크로의 QML 및 QML_URI 옵션을 통해 사용할 수 있습니다. 임포트 이름은 .proto 패키지 이름과 동일하거나, qt_add_protobuf() 매크로의 QML_URI 옵션으로 정의됩니다. 이 타입을 사용하려면 .qml 파일에 다음 임포트 문을 추가하십시오:

import my.proto.package.uri

C++ API

Qt 모듈의 C++ API를 사용하려면 모듈 라이브러리를 직접 또는 다른 종속성을 통해 링크해야 합니다. CMake 및 qmake를 비롯한 여러 빌드 도구가 이를 위해 전용 지원 기능을 제공합니다.

CMake를 사용한 빌드

find_package() 명령을 사용하여 Qt6 패키지 내에서 필요한 모듈 구성 요소를 찾으십시오:

find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)

자세한 내용은 ‘CMake를 사용한 빌드’ 개요를 참조하십시오.

문서 및 가이드

참고 문헌

예제

라이선스 및 출처 표기

Qt Protobuf 모듈은 The Qt Company의 상용 라이선스에 따라 제공됩니다. 또한, 이 모듈은 GNU Lesser General Public License 버전 3, GNU General Public License 버전 2 또는 GNU General Public License 버전 3과 같은 자유 소프트웨어 라이선스 하에서도 제공됩니다. 자세한 내용은 Qt 라이선싱을 참조하십시오.

또한, Qt 6.12.0의 qtprotobufgen 도구에는 다음의 허용적인 라이선스에 따라 배포되는 타사 모듈이 포함될 수 있습니다:

protobuf, version 21.9

BSD 3조항 “New” 또는 “Revised” 라이선스

© 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.