이 페이지에서

Qt D-Bus 타입 시스템

D-Bus는 몇 가지 기본 유형과 배열 및 구조체 내에서의 기본 유형 조합을 기반으로 하는 확장 가능한 유형 시스템을 갖추고 있습니다. Qt D-Bus 는 ` QDBusArgument ` 클래스를 통해 해당 유형 시스템에 대한 인터페이스를 구현함으로써, 사용자 프로그램이 버스를 통해 사실상 모든 C++ 유형을 송수신할 수 있도록 합니다.

기본 유형

기본 유형은 QDBusArgument 에서 기본적으로 지원되며, 송수신하기 위해 특별한 사용자 정의가 필요하지 않습니다. 이러한 기본 유형과 관련된 C++ 클래스는 다음과 같습니다:

Qt 유형D-Bus에 해당하는 유형
ucharBYTE
boolBOOLEAN
shortINT16
ushortUINT16
intINT32
uintUINT32
qlonglongINT64
qulonglongUINT64
doubleDOUBLE
QStringSTRING
QDBusVariantVARIANT
QDBusObjectPathOBJECT_PATH
QDBusSignature시그니처

기본 유형 외에도, ` QDBusArgument `는 Qt 애플리케이션에서 널리 사용되기 때문에 ` QStringList `와 ` QByteArray`라는 두 가지 비기본 유형을 기본적으로 지원합니다.

복합 유형

D-Bus는 복합형을 생성할 수 있도록 하는 세 가지 유형의 기본형 집합을 지정합니다. 이들은 ARRAY, STRUCT 및 맵/사전입니다.

배열은 동일한 유형의 요소 0개 이상으로 구성된 집합인 반면, 구조체는 고정된 수의 요소로 구성된 집합이며 각 요소는 임의의 유형일 수 있습니다. 맵 또는 사전은 요소 쌍으로 구성된 배열로 구현되므로, 하나의 맵에는 0개 이상의 요소가 포함될 수 있습니다.

유형 시스템 확장

Qt D-Bus 에서 사용자 정의 타입을 사용하려면, 해당 타입을 Q_DECLARE_METATYPE() 매크로를 사용하여 Qt 메타타입으로 선언하고 qDBusRegisterMetaType() 함수를 통해 등록해야 합니다. 스트리밍 연산자 operator>> 와 operator<< 는 등록 시스템에 의해 자동으로 탐지됩니다.

Qt D-Bus QMap 및 과 같은 Qt의 QList컨테이너 클래스와 함께 사용할 수 있도록 배열 및 맵에 대한 템플릿 특화 기능을 제공하므로, 해당 유형에 대한 스트리밍 연산자 함수를 직접 작성할 필요가 없습니다. 구조체의 경우, Qt는 와 상호 매핑되는 제네릭 특화 기능을 제공합니다. 사용자 정의 유형을 대신 사용하거나 다른 유형에 적용하려면 연산자를 명시적으로 구현해야 합니다. std::tuple

구조체, 배열 및 맵에 대한 예제는 QDBusArgument 문서를 참조하십시오.

실제 사용 사례

Qt D-Bus 의 모든 유형(기본 유형 및 사용자 정의 유형 모두)은 버스를 통해 모든 유형의 메시지를 주고받는 데 사용할 수 있습니다.

경고: 위에 나열된 목록에 없는 유형( typedefs 를 포함한 나열된 유형들)은 사용할수 없습니다. 여기에는 QList<QVariant> 및 QMap<QString,QVariant>도 포함됩니다.

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