이 페이지에서

QDBusArgument Class

QDBusArgument 클래스는 D-Bus 인수를 마샬링하고 디마샬링하는 데 사용됩니다. 더 보기...

헤더: #include <QDBusArgument>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus

공개 유형

enum ElementType { BasicType, VariantType, ArrayType, StructureType, MapType, …, UnknownType }

공개 함수

QDBusArgument()
QDBusArgument(const QDBusArgument &other)
~QDBusArgument()
QVariant asVariant() const
bool atEnd() const
void beginArray() const
void beginArray(QMetaType id)
void beginMap() const
void beginMap(QMetaType keyMetaType, QMetaType valueMetaType)
void beginMapEntry()
void beginMapEntry() const
void beginStructure()
void beginStructure() const
QDBusArgument::ElementType currentType() const
void endArray()
void endArray() const
void endMap()
void endMap() const
void endMapEntry()
void endMapEntry() const
void endStructure()
void endStructure() const
void swap(QDBusArgument &other)
QDBusArgument &operator<<(uchar arg)
QDBusArgument &operator<<(bool arg)
QDBusArgument &operator<<(const QByteArray &arg)
QDBusArgument &operator<<(const QDBusVariant &arg)
QDBusArgument &operator<<(const QString &arg)
QDBusArgument &operator<<(const QStringList &arg)
QDBusArgument &operator<<(double arg)
QDBusArgument &operator<<(int arg)
QDBusArgument &operator<<(qlonglong arg)
QDBusArgument &operator<<(qulonglong arg)
QDBusArgument &operator<<(short arg)
QDBusArgument &operator<<(uint arg)
QDBusArgument &operator<<(ushort arg)
QDBusArgument &operator=(const QDBusArgument &other)
const QDBusArgument &operator>>(uchar &arg) const
const QDBusArgument &operator>>(QByteArray &arg) const
const QDBusArgument &operator>>(QDBusVariant &arg) const
const QDBusArgument &operator>>(QString &arg) const
const QDBusArgument &operator>>(QStringList &arg) const
const QDBusArgument &operator>>(bool &arg) const
const QDBusArgument &operator>>(double &arg) const
const QDBusArgument &operator>>(int &arg) const
const QDBusArgument &operator>>(qlonglong &arg) const
const QDBusArgument &operator>>(qulonglong &arg) const
const QDBusArgument &operator>>(short &arg) const
const QDBusArgument &operator>>(uint &arg) const
const QDBusArgument &operator>>(ushort &arg) const
QMetaType qDBusRegisterMetaType()
T qdbus_cast(const QDBusArgument &arg)

상세 설명

이 클래스는 D-Bus를 통해 원격 애플리케이션에 인수를 전송하고 이를 다시 수신하는 데 사용됩니다. D-Bus는 몇 가지 기본 유형과 이들의 조합을 기반으로 하는 확장 가능한 유형 시스템을 제공합니다. 유형 시스템에 대한 자세한 내용은 Qt D-Bus 유형 시스템 페이지를 참조하십시오.

QDBusArgument는 Qt D-Bus 타입 시스템의 핵심 클래스로, 기본 타입을 마샬링 및 디마샬링하는 기능을 제공합니다. 복합 타입은 배열, 딕셔너리 또는 구조체 내에서 하나 이상의 기본 타입을 조합하여 생성됩니다.

다음 예제는 Qt D-Bus 타입 시스템을 사용하여 정수와 문자열을 포함하는 구조체를 생성하는 방법을 보여줍니다:

struct MyStructure
{
    int count;
    QString name;

    // ...
};
Q_DECLARE_METATYPE(MyStructure)

// Marshall the MyStructure data into a D-Bus argument
QDBusArgument &operator<<(QDBusArgument &argument, const MyStructure &myStruct)
{
    argument.beginStructure();
    argument << myStruct.count << myStruct.name;
    argument.endStructure();
    return argument;
}

// Retrieve the MyStructure data from the D-Bus argument
const QDBusArgument &operator>>(const QDBusArgument &argument, MyStructure &myStruct)
{
    argument.beginStructure();
    argument >> myStruct.count >> myStruct.name;
    argument.endStructure();
    return argument;
}

이 타입을 QDBusArgument와 함께 사용하려면 먼저 qDBusRegisterMetaType()를 통해 등록해야 합니다. 따라서 프로그램의 적절한 위치에 다음 코드를 추가해야 합니다:

qDBusRegisterMetaType<MyStructure>();

등록이 완료되면, 해당 타입은 발신 메서드 호출( QDBusAbstractInterface::call()을 통해 수행됨), 등록된 객체의 신호 발신 또는 원격 애플리케이션으로부터의 수신 호출에서 사용할 수 있습니다.

구조체의 경우, operator<< 및 operator>> 스트리밍 함수는 읽기 및 쓰기(마샬링 및 디마샬링) 시 항상 동일한 수의 항목을 생성해야 한다는 점에 유의해야 합니다. 그렇지 않으면 호출과 신호가 아무런 오류 메시지 없이 실패할 수 있습니다.

다음 예제는 유효하지 않은 데이터를 포함할 수 있는 클래스의 맥락에서 이러한 잘못된 사용법을 보여줍니다:

//bad code
    // Wrongly marshall the MyTime data into a D-Bus argument
    QDBusArgument &operator<<(QDBusArgument &argument, const MyTime &mytime)
    {
        argument.beginStructure();
        if (mytime.isValid)
            argument << true << mytime.hour
                     << mytime.minute << mytime.second;
        else
            argument << false;
        argument.endStructure();
        return argument;
    }

이 예제에서 operator<< 및 operator>> 함수는 서로 다른 수의 읽기/쓰기 작업을 수행할 수 있습니다. 이는 Qt D-Bus 타입 시스템에 혼란을 줄 수 있으므로 피해야 합니다.

QDBusAbstractInterface, Qt D-Bus 타입 시스템, 어댑터 사용, qdbus_cast()항목도 참조하십시오 .

멤버 타입 문서

enum QDBusArgument::ElementType

이 열거형은 인수가 포함하는 요소의 유형을 설명합니다.

상수값설명
QDBusArgument::BasicType0QVariant 에서 인식하는 기본 요소입니다. 다음 유형은 기본 유형으로 간주됩니다: bool, byte, short, ushort, int, uint, qint64, quint64, double, QString, QByteArray, QDBusObjectPath, QDBusSignature
QDBusArgument::VariantType1변형 요소 (QDBusVariant)
QDBusArgument::ArrayType2배열 요소로, 일반적으로 QList<T>로 표현됩니다. 참고: QByteArray 및 연관 맵은 D-Bus 프로토콜에서 배열로 전송되더라도 배열로 간주되지 않습니다.
QDBusArgument::StructureType3QDateTime, QPoint 등과 같이 구조체로 표현되는 사용자 정의 유형.
QDBusArgument::MapType4QMap<Key, Value> 또는 QHash<Key, Value>와 같은 연관 컨테이너
QDBusArgument::MapEntryType5연관 컨테이너의 하나의 항목: 키와 값이 함께 하나의 맵 항목 유형을 형성합니다.
QDBusArgument::UnknownType-1유형이 알 수 없거나 목록의 끝에 도달한 경우입니다.

currentType()도 참조하십시오 .

멤버 함수 문서

QDBusArgument::QDBusArgument()

빈 QDBusArgument 인수를 생성합니다.

빈 QDBusArgument 객체는 읽기나 쓰기 작업을 수행할 수 없습니다.

QDBusArgument::QDBusArgument(const QDBusArgument &other)

other QDBusArgument 객체의 복사본을 생성합니다.

따라서 이 시점부터 두 객체 모두 동일한 상태를 갖게 됩니다. QDBusArgument는 명시적으로 공유되므로, 어느 한 쪽의 복사본에 변경 사항이 발생하면 다른 쪽에도 영향을 미칩니다.

[noexcept] QDBusArgument::~QDBusArgument()

이 QDBusArgument 객체와 관련된 리소스를 해제합니다.

QVariant QDBusArgument::asVariant() const

현재 인수를 ` QVariant` 형식으로 반환합니다. 기본 유형은 디코딩되어 ` QVariant`에 담겨 반환되지만, 복합 유형의 경우 이 함수는 ` QDBusArgument ` 객체를 ` QVariant`에 담아 반환합니다. 인수를 디코딩하는 작업(예: 해당 객체 내에서 `asVariant()`를 호출하는 방식)은 호출자의 책임입니다.

예를 들어, 현재 인수가 INT32인 경우, 이 함수는 QMetaType::Int 유형의 인수를 가진 QVariant 를 반환합니다. INT32 배열의 경우, QDBusArgument 를 포함하는 QVariant 를 반환합니다.

오류가 발생하거나 더 이상 디코딩할 인수가 없는 경우(즉, 인수 목록의 끝에 도달한 경우), 이 함수는 유효하지 않은 QVariant 를 반환합니다.

atEnd()도 참조하십시오 .

bool QDBusArgument::atEnd() const

이 ` QDBusArgument`에서 추출할 요소가 더 이상 없으면 ` true `를 반환합니다. 이 함수는 주로 ` beginMap()` 및 ` beginArray()`에서 반환되는 ` QDBusArgument ` 객체에서 사용됩니다.

void QDBusArgument::beginArray() const

D-Bus 배열을 재귀적으로 탐색하여 배열 요소를 추출할 수 있도록 합니다.

이 함수는 일반적으로 다음 예제와 같이 ` operator>> ` 스트리밍 연산자에서 사용됩니다:

// Extract a MyArray array of MyElement elements
const QDBusArgument &operator>>(const QDBusArgument &argument, MyArray &myArray)
{
    argument.beginArray();
    myArray.clear();

    while (!argument.atEnd()) {
        MyElement element;
        argument >> element;
        myArray.append(element);
    }

    argument.endArray();
    return argument;
}

디마셜링하려는 유형이 ` QList `이거나 템플릿 매개변수 하나를 받는 Qt의 컨테이너 클래스 중 하나라면, ` Qt D-Bus `이 데이터 디마셜링 작업을 수행하는 제네릭 템플릿을 제공하므로 해당 유형에 대한 ` operator>> ` 함수를 별도로 선언할 필요가 없습니다. 이는 ` std::list`, ` std::vector` 등과 같은 STL의 시퀀스 컨테이너에도 동일하게 적용됩니다.

atEnd(), beginStructure(), beginMap()도 참조하십시오 .

void QDBusArgument::beginArray(QMetaType id)

id 메타 유형의 요소를 추가하는 데 적합한 새로운 D-Bus 배열을 엽니다.

이 함수는 일반적으로 다음 예제와 같이 operator<< 스트리밍 연산자에서 사용됩니다:

// Append an array of MyElement types
QDBusArgument &operator<<(QDBusArgument &argument, const MyArray &myArray)
{
    argument.beginArray(qMetaTypeId<MyElement>());
    for (const auto &element : myArray)
        argument << element;
    argument.endArray();
    return argument;
}

마샬링하려는 유형이 ` QList `이거나 템플릿 매개변수를 하나 받는 Qt의 컨테이너 클래스 중 하나라면, ` Qt D-Bus `이 데이터 마샬링 작업을 수행하는 제네릭 템플릿을 제공하므로 해당 유형에 대한 ` operator<< ` 함수를 별도로 선언할 필요가 없습니다. 이는 ` std::list`, ` std::vector` 등과 같은 STL의 시퀀스 컨테이너에도 동일하게 적용됩니다.

endArray(), beginStructure(), beginMap()도 참조하십시오 .

void QDBusArgument::beginMap() const

D-Bus 맵을 재귀적으로 탐색하여 맵의 요소를 추출할 수 있게 합니다.

이 함수는 일반적으로 다음 예제와 같이 ` operator>> ` 스트리밍 연산자에서 사용됩니다:

// Extract a MyDictionary map that associates integers to MyElement items
const QDBusArgument &operator>>(const QDBusArgument &argument, MyDictionary &myDict)
{
    argument.beginMap();
    myDict.clear();

    while (!argument.atEnd()) {
        int key;
        MyElement value;
        argument.beginMapEntry();
        argument >> key >> value;
        argument.endMapEntry();
        myDict.insert(key, value);
    }

    argument.endMap();
    return argument;
}

디마셜링하려는 유형이 ` QMap ` 또는 ` QHash`인 경우, ` Qt D-Bus `가 데이터 디마셜링 작업을 수행하는 제네릭 템플릿을 제공하므로 해당 유형에 대한 ` operator>> ` 함수를 별도로 선언할 필요가 없습니다.

endMap(), beginStructure(), beginArray(), beginMapEntry()도 참조하십시오 .

void QDBusArgument::beginMap(QMetaType keyMetaType, QMetaType valueMetaType)

요소를 추가하기에 적합한 새로운 Qt D-Bus 맵을 엽니다. 맵은 Qt XML의 ` QMap `이나 ` QHash`과 같이, 하나의 항목(키)을 다른 항목(값)과 연결하는 컨테이너입니다. 맵의 키 및 값 메타 타입 ID는 각각 ` keyMetaType ` 및 ` valueMetaType `에 전달되어야 합니다.

이 함수는 일반적으로 다음 예제와 같이 operator<< 스트리밍 연산자에서 사용됩니다:

// Append a dictionary that associates ints to MyValue types
QDBusArgument &operator<<(QDBusArgument &argument, const MyDictionary &myDict)
{
    argument.beginMap(QMetaType::fromType<int>(), QMetaType::fromType<MyValue>());
    MyDictionary::const_iterator i;
    for (i = myDict.cbegin(); i != myDict.cend(); ++i) {
        argument.beginMapEntry();
        argument << i.key() << i.value();
        argument.endMapEntry();
    }
    argument.endMap();
    return argument;
}

QHash 이나 std::map과 같은 연관 컨테이너의 경우, Qt D-Bus 이 데이터 마샬링 작업을 수행하는 제네릭 템플릿을 제공하므로 일반적으로 operator<< 또는 operator>> 함수를 별도로 정의할 필요가 없습니다.

endMap(), beginStructure(), beginArray(), beginMapEntry()도 참조하십시오 .

void QDBusArgument::beginMapEntry()

키 및 값 항목을 추가하기에 적합한 D-Bus 맵 항목을 엽니다. 이 함수는 beginMap()을 사용하여 맵을 연 경우에만 유효합니다.

이 함수의 사용 예제는 beginMap()을 참조하십시오.

endMapEntry() 및 beginMap()도 참조하십시오 .

void QDBusArgument::beginMapEntry() const

D-Bus 맵 항목을 재귀적으로 탐색하여 키-값 쌍을 추출할 수 있도록 합니다.

이 함수가 일반적으로 어떻게 사용되는지에 대한 예제는 beginMap()을 참조하십시오.

endMapEntry() 및 beginMap()도 참조하십시오 .

void QDBusArgument::beginStructure()

새로운 인수를 추가할 수 있는 새로운 D-Bus 구조체를 엽니다.

이 함수는 일반적으로 다음 예제와 같이 operator<< 스트리밍 연산자에서 사용됩니다:

QDBusArgument &operator<<(QDBusArgument &argument, const MyStructure &myStruct)
{
    argument.beginStructure();
    argument << myStruct.member1 << myStruct.member2;
    argument.endStructure();
    return argument;
}

구조체는 다른 구조체를 포함할 수 있으므로 다음 코드도 유효합니다:

QDBusArgument &operator<<(QDBusArgument &argument, const MyStructure &myStruct)
{
    argument.beginStructure();
    argument << myStruct.member1 << myStruct.member2;

    argument.beginStructure();
    argument << myStruct.member3.subMember1 << myStruct.member3.subMember2;
    argument.endStructure();

    argument << myStruct.member4;
    argument.endStructure();
    return argument;
}

endStructure(), beginArray(), beginMap()도 참조하십시오 .

void QDBusArgument::beginStructure() const

요소를 추출하기에 적합한 D-Bus 구조체를 엽니다.

이 함수는 일반적으로 다음 예제와 같이 operator>> 스트리밍 연산자에서 사용됩니다.

const QDBusArgument &operator>>(const QDBusArgument &argument, MyStructure &myStruct)
{
    argument.beginStructure();
    argument >> myStruct.member1 >> myStruct.member2 >> myStruct.member3;
    argument.endStructure();
    return argument;
}

endStructure(), beginArray(), beginMap()도 참조하십시오 .

QDBusArgument::ElementType QDBusArgument::currentType() const

현재 요소 유형의 분류를 반환합니다. 유형 디코딩 중 오류가 발생하거나 인수의 끝 부분에 도달한 경우, 이 함수는 ` QDBusArgument::UnknownType`를 반환합니다.

이 함수는 인수를 디마샬링할 때만 의미가 있습니다. 마샬링 중에 이 함수를 사용하면 항상 ` UnknownType`를 반환합니다.

void QDBusArgument::endArray()

beginArray() 함수로 열린 D-Bus 배열을 닫습니다. 이 함수는 beginArray() 함수가 호출된 횟수와 동일한 횟수만큼 호출되어야 합니다.

beginArray(), endStructure() 및 endMap()도 참조하십시오 .

void QDBusArgument::endArray() const

D-Bus 배열을 닫고, 배열이 끝난 후 다음 요소를 추출할 수 있도록 합니다.

beginArray()도 참조하십시오 .

void QDBusArgument::endMap()

beginMap() 함수로 열린 D-Bus 맵을 닫습니다. 이 함수는 beginMap() 함수가 호출된 횟수와 동일한 횟수만큼 호출되어야 합니다.

beginMap(), endStructure() 및 endArray()도 참조하십시오 .

void QDBusArgument::endMap() const

D-Bus 맵을 닫고, 맵 다음에 오는 요소를 추출할 수 있게 합니다.

beginMap()도 참조하십시오 .

void QDBusArgument::endMapEntry()

beginMapEntry() 함수로 열린 D-Bus 맵 항목을 닫습니다. 이 함수는 beginMapEntry() 함수가 호출된 횟수와 동일한 횟수만큼 호출되어야 합니다.

beginMapEntry()도 참조하십시오 .

void QDBusArgument::endMapEntry() const

D-Bus 맵 항목을 닫고, 맵에서 다음 요소를 추출할 수 있도록 합니다.

beginMapEntry()도 참조하십시오 .

void QDBusArgument::endStructure()

beginStructure() 함수로 열린 D-Bus 구조체를 닫습니다. 이 함수는 beginStructure() 함수가 호출된 횟수와 동일한 횟수만큼 호출되어야 합니다.

beginStructure(), endArray() 및 endMap()도 참조하십시오 .

void QDBusArgument::endStructure() const

D-Bus 구조체를 닫고, 구조체 다음에 있는 요소를 추출할 수 있도록 합니다.

beginStructure()도 참조하십시오 .

[noexcept] void QDBusArgument::swap(QDBusArgument &other)

이 인수를 ` other`와 서로 바꿉니다. 이 작업은 매우 빠르며 절대 실패하지 않습니다.

QDBusArgument &QDBusArgument::operator<<(uchar arg)

BYTE 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

QDBusArgument &QDBusArgument::operator<<(bool arg)

BOOLEAN 유형의 기본 값 ` arg `을 D-Bus 스트림에 추가합니다.

이 함수는 오버로딩된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(const QByteArray &arg)

arg 에 의해 ARRAY of BYTE 로 지정된 QByteArray 를 D-Bus 스트림에 추가합니다.

QStringList QByteArray 는 Qt 애플리케이션에서 널리 사용되기 때문에 에서 직접 지원하는 유일한 두 가지 비기본형(non-primitive) 유형입니다. QDBusArgument

그 외의 배열은 Qt D-Bus 의 복합 타입을 통해 지원됩니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(const QDBusVariant &arg)

VARIANT 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

Qt D-Bus 변형 유형은 다른 변형 유형을 포함하여 어떤 유형이든 포함할 수 있습니다. 이는 Qt XML의 ` QVariant ` 유형과 유사합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(const QString &arg)

STRING (유니코드 문자열) 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(const QStringList &arg)

arg 에 의해 정의된 QStringList 를 ARRAY of STRING 형태로 D-Bus 스트림에 추가합니다.

QStringList QByteArray 는 Qt 애플리케이션에서 널리 사용되기 때문에 에서 직접 지원하는 유일한 두 가지 비기본 유형입니다. QDBusArgument

그 외의 배열은 Qt D-Bus 의 복합 타입을 통해 지원됩니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(double arg)

DOUBLE (이중 정밀도 부동 소수점) 유형의 원시 값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(int arg)

INT32 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(qlonglong arg)

INT64 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(qulonglong arg)

UINT64 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(short arg)

INT16 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(uint arg)

UINT32 유형의 기본 값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator<<(ushort arg)

UINT16 유형의 기본값 arg 을 D-Bus 스트림에 추가합니다.

이 함수는 오버로드된 함수입니다.

QDBusArgument &QDBusArgument::operator=(const QDBusArgument &other)

other QDBusArgument 객체를 이 객체로 복사합니다.

따라서 이 시점부터 두 객체 모두 동일한 상태를 갖게 됩니다. QDBusArguments는 명시적으로 공유되므로, 한 쪽의 복사본을 수정하면 다른 쪽에도 영향을 미칩니다.

const QDBusArgument &QDBusArgument::operator>>(uchar &arg) const

D-Bus 스트림에서 ` BYTE ` 유형의 D-Bus 프리미티브 인자 하나를 추출하여 ` arg`에 저장합니다.

const QDBusArgument &QDBusArgument::operator>>(QByteArray &arg) const

D-Bus 스트림에서 바이트 배열을 추출하여 ` QByteArray`로 반환합니다.

QStringList QByteArray 는 Qt 애플리케이션에서 널리 사용되기 때문에 에서 직접 지원하는 유일한 두 가지 비기본형(non-primitive) 유형입니다. QDBusArgument

다른 배열은 Qt D-Bus 의 복합 유형을 통해 지원됩니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(QDBusVariant &arg) const

D-Bus 스트림에서 ` VARIANT ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

Qt D-Bus 변형 타입은 다른 변형 타입을 포함하여 어떤 타입이든 포함할 수 있습니다. 이는 Qt XML의 ` QVariant ` 타입과 유사합니다.

변형체에 ` QDBusArgument`가 직접 지원하지 않는 타입이 포함된 경우, 반환된 ` QDBusVariant `의 값에는 다른 ` QDBusArgument`가 포함됩니다. 이를 다른 타입으로 추가로 디마셜링하는 것은 사용자의 책임입니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(QString &arg) const

D-Bus 스트림에서 ` STRING `(유니코드 문자열) 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(QStringList &arg) const

D-Bus 스트림에서 문자열 배열을 추출하여 ` QStringList` 객체로 반환합니다.

QStringList QByteArray 는 Qt 애플리케이션에서 널리 사용되기 때문에 에서 직접 지원하는 유일한 두 가지 비기본형입니다. QDBusArgument

다른 배열은 ` Qt D-Bus`의 복합 유형을 통해 지원됩니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(bool &arg) const

D-Bus 스트림에서 ` BOOLEAN ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(double &arg) const

D-Bus 스트림에서 ` DOUBLE `(이중 정밀도 부동 소수점) 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(int &arg) const

D-Bus 스트림에서 ` INT32 ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(qlonglong &arg) const

D-Bus 스트림에서 ` INT64 ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(qulonglong &arg) const

D-Bus 스트림에서 ` UINT64 ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(short &arg) const

D-Bus 스트림에서 ` INT16 ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로드된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(uint &arg) const

D-Bus 스트림에서 ` UINT32 ` 유형의 D-Bus 프리미티브 인자 하나를 추출합니다.

이 함수는 오버로딩된 함수입니다.

const QDBusArgument &QDBusArgument::operator>>(ushort &arg) const

D-Bus 스트림에서 ` UINT16 ` 유형의 D-Bus 프리미티브 인수를 하나 추출합니다.

이 함수는 오버로드된 함수입니다.

관련 비회원 요소

template <typename T> QMetaType qDBusRegisterMetaType()

T 가 아직 등록되지 않은 경우, Qt D-Bus 타입 시스템과 Qt meta-type system 에 이를 등록합니다.

유형을 등록하려면 Q_DECLARE_METATYPE() 매크로를 사용하여 메타 유형으로 선언한 다음, 다음 예제와 같이 등록해야 합니다:

#include <QDBusMetaType>

qDBusRegisterMetaType<MyClass>();

T 가 Qt의 컨테이너 클래스 중 하나가 아닌 경우, T 와 QDBusArgument 사이에 operator<< 및 operator>> 스트리밍 연산자가 이미 선언되어 있어야 합니다. 이러한 유형을 선언하는 방법에 대한 자세한 내용은 Qt D-Bus 타입 시스템 페이지를 참조하십시오.

이 함수는 해당 타입에 대한 Qt 메타 타입 ID를 반환합니다( qRegisterMetaType()에서 반환되는 값과 동일합니다).

참고: 스트림 가능한 타입( QList, QHash 또는 QMap 컨테이너 포함)을 상속하는 T 가 사용자 정의 operator<< 및 operator>> 을 제공하지 않고도 스트리밍될 수 있는기능은 Qt 5.7부터 더 이상 권장되지 않습니다. 이는 T 내의 기본 클래스를 제외한 모든 요소를 무시하기 때문입니다. 이에 대한 진단 메시지는 표시되지 않습니다. 스트리밍하려는 모든 유형에 대해 항상 이러한 연산자를 직접 구현해야 하며, 기저 클래스에 대해서는 Qt에서 제공하는 스트림 연산자에 의존해서는 안 됩니다.

참고: 이 함수는 스레드 안전합니다.

Qt D-Bus 타입 시스템, qRegisterMetaType() 및 QMetaType도 참조하십시오 .

template <typename T> T qdbus_cast(const QDBusArgument &arg)

arg 의 내용을 T 유형으로 디마셜링하려고 시도합니다. 예를 들어:

MyType item = qdbus_cast<Type>(argument);

이는 다음 코드와 동일하다는 점에 유의하십시오:

MyType item;
argument >> item;

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