Qt D-Bus 타입 시스템
D-Bus는 몇 가지 프리미티브와 배열 및 구조체의 프리미티브 구성에 기반한 확장 가능한 타입 시스템을 가지고 있습니다. Qt D-Bus 는 QDBusArgument 클래스를 통해 해당 타입 시스템에 대한 인터페이스를 구현하여 사용자 프로그램이 버스를 통해 거의 모든 C++ 타입을 주고받을 수 있도록 합니다.
프리미티브 타입
기본 유형은 QDBusArgument 에서 기본적으로 지원되며 특별한 사용자 정의 없이도 송수신할 수 있습니다. 아래 목록에 해당 유형과 관련된 C++ 클래스가 나와 있습니다:
Qt 타입 | D-Bus와 동등한 타입 |
---|---|
uchar | BYTE |
bool | BOOLEAN |
short | INT16 |
ushort | UINT16 |
int | INT32 |
uint | UINT32 |
qlonglong | INT64 |
qulonglong | UINT64 |
double | DOUBLE |
QString | STRING |
QDBusVariant | VARIANT |
QDBusObjectPath | OBJECT_PATH |
QDBusSignature | SIGNATURE |
프리미티브 형 외에도, QDBusArgument 는 Qt 응용 프로그램에서 널리 사용되기 때문에 두 가지 비 프리미티브 형도 기본적으로 지원합니다: QStringList 과 QByteArray.
복합형
D-Bus는 복합형을 만들 수 있는 세 가지 유형의 기본형 집합을 지정합니다. ARRAY
, STRUCT
그리고 지도/사전입니다.
배열은 동일한 유형의 요소가 0개 이상 있는 집합이고, 구조체는 각각 어떤 유형이든 간에 고정된 수의 요소로 구성된 집합입니다. 맵이나 사전은 한 쌍의 요소 배열로 구현되므로 하나의 맵에 0개 이상의 요소가 있을 수 있습니다.
유형 시스템 확장하기
Qt D-Bus 에서 자신의 타입을 사용하려면 Q_DECLARE_METATYPE() 매크로를 사용하여 타입을 Qt 메타 타입으로 선언하고 qDBusRegisterMetaType() 함수에 등록해야 합니다. 스트리밍 연산자 operator>>
및 operator<<
은 등록 시스템에서 자동으로 찾습니다.
Qt D-Bus 는 QMap 및 QList 과 같은 Qt의 컨테이너 클래스와 함께 사용할 수 있도록 배열과 맵에 대한 템플릿 전문화를 제공하므로 해당 스트리밍 연산자 함수를 작성할 필요가 없습니다. 다른 타입, 특히 구조를 구현하는 타입의 경우 연산자를 명시적으로 구현해야 합니다.
구조체, 배열 및 맵에 대한 예제는 QDBusArgument 문서를 참조하세요.
사용 중인 타입 시스템
모든 Qt D-Bus 유형(기본 유형 및 사용자 정의 유형 모두)을 사용하여 버스를 통해 모든 유형의 메시지를 주고받을 수 있습니다.
© 2025 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.