Auf dieser Seite

QDBusArgument Class

Die Klasse `QDBusArgument` dient zum Marshalling und Demarshalling von D-Bus-Argumenten. Mehr...

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

Öffentliche Typen

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

Öffentliche Funktionen

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)

Ausführliche Beschreibung

Die Klasse dient dazu, Argumente über D-Bus an entfernte Anwendungen zu senden und diese wieder zurückzuerhalten. D-Bus bietet ein erweiterbares Typsystem, das auf einigen wenigen primitiven Typen und deren Verknüpfungen basiert. Weitere Informationen zum Typsystem finden Sie auf der Seite „Qt D-Bus -Typsystem “.

„QDBusArgument“ ist die zentrale Klasse im „ Qt D-Bus “-Typsystem und stellt Funktionen zum Marshalling und Demarshalling der primitiven Typen bereit. Die zusammengesetzten Typen werden dann durch die Verknüpfung eines oder mehrerer primitiver Typen in Arrays, Dictionaries oder Strukturen erstellt.

Das folgende Beispiel veranschaulicht, wie eine Struktur, die eine Ganzzahl und eine Zeichenkette enthält, mithilfe des Qt D-Bus -Typsystems erstellt werden kann:

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;
}

Der Typ muss zunächst mit ` qDBusRegisterMetaType()` registriert werden, bevor er mit `QDBusArgument` verwendet werden kann. Daher sollten Sie an einer beliebigen Stelle in Ihrem Programm den folgenden Code einfügen:

qDBusRegisterMetaType<MyStructure>();

Nach der Registrierung kann ein Typ in ausgehenden Methodenaufrufen (mit ` QDBusAbstractInterface::call()`), bei der Signalausgabe von registrierten Objekten oder in eingehenden Aufrufen von Remote-Anwendungen verwendet werden.

Es ist wichtig zu beachten, dass die Streaming-Funktionen operator<< und operator>> bei Strukturen sowohl beim Lesen als auch beim Schreiben (Marshalling und Demarshalling) immer die gleiche Anzahl von Einträgen erzeugen müssen; andernfalls können Aufrufe und Signale stillschweigend fehlschlagen.

Das folgende Beispiel veranschaulicht diese falsche Verwendung im Zusammenhang mit einer Klasse, die möglicherweise ungültige Daten enthält:

//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;
    }

In diesem Beispiel können sowohl die Funktion „ operator<< “ als auch die Funktion „ operator>> “ eine unterschiedliche Anzahl von Lese-/Schreibvorgängen erzeugen. Dies kann das Typsystem von „ Qt D-Bus “ verwirren und sollte vermieden werden.

Siehe auch „ QDBusAbstractInterface“ , „Das Typsystem von Qt D-Bus “, „Verwendung von Adaptern“ und „ qdbus_cast()“.

Dokumentation zu Mitgliedstypen

enum QDBusArgument::ElementType

Diese Enumeration beschreibt den Typ des Elements, das das Argument enthält.

KonstanteWertBeschreibung
QDBusArgument::BasicType0Ein Basiselement, das von „ QVariant “ erkannt wird. Die folgenden Typen gelten als Basistypen: „bool“, „byte“, „short“, „ushort“, „int“, „uint“, „qint64“, „quint64“, „double“, „ QString “, „ QByteArray “, „ QDBusObjectPath “, QDBusSignature
QDBusArgument::VariantType1Das Variantenelement (QDBusVariant)
QDBusArgument::ArrayType2Ein Array-Element, das üblicherweise durch QList<T> dargestellt wird. Hinweis: QByteArray und assoziative Maps gelten nicht als Arrays, auch wenn das D-Bus-Protokoll sie als solche überträgt.
QDBusArgument::StructureType3Ein benutzerdefinierter Typ, der durch eine Struktur dargestellt wird, wie z. B. ` QDateTime`, ` QPoint` usw.
QDBusArgument::MapType4Ein assoziativer Container, wie z. B. QMap<Key, Value> oder QHash<Key, Value>
QDBusArgument::MapEntryType5Ein Eintrag in einem assoziativen Container: Sowohl der Schlüssel als auch der Wert bilden einen Map-Eintrag-Typ.
QDBusArgument::UnknownType-1Der Typ ist unbekannt oder das Ende der Liste wurde erreicht.

Siehe auch currentType().

Dokumentation zu Mitgliedsfunktionen

QDBusArgument::QDBusArgument()

Erstellt ein leeres QDBusArgument-Objekt.

Ein leeres QDBusArgument-Objekt erlaubt weder Lese- noch Schreibvorgänge.

QDBusArgument::QDBusArgument(const QDBusArgument &other)

Erstellt eine Kopie des QDBusArgument-Objekts „ other “.

Beide Objekte weisen daher ab diesem Zeitpunkt denselben Zustand auf. QDBusArguments werden explizit gemeinsam genutzt, sodass sich jede Änderung an einer der beiden Kopien auch auf die andere auswirkt.

[noexcept] QDBusArgument::~QDBusArgument()

Gibt die mit diesem „ QDBusArgument “-Objekt verknüpften Ressourcen frei.

QVariant QDBusArgument::asVariant() const

Gibt das aktuelle Argument in Form eines ` QVariant` zurück. Grundtypen werden dekodiert und als ` QVariant` zurückgegeben; bei komplexen Typen gibt diese Funktion jedoch ein ` QDBusArgument `-Objekt im ` QVariant` zurück. Es liegt in der Verantwortung des Aufrufers, das Argument zu dekodieren (beispielsweise durch Aufruf von `asVariant()` darin).

Ist das aktuelle Argument beispielsweise ein INT32, gibt diese Funktion ein ` QVariant ` mit einem Argument vom Typ ` QMetaType::Int` zurück. Bei einem Array von INT32 gibt sie ein ` QVariant ` zurück, das ein ` QDBusArgument` enthält.

Tritt ein Fehler auf oder sind keine Argumente mehr zum Dekodieren vorhanden (d. h., wir befinden uns am Ende der Argumentliste), gibt diese Funktion ein ungültiges ` QVariant` zurück.

Siehe auch atEnd().

bool QDBusArgument::atEnd() const

Gibt „ true “ zurück, wenn aus diesem „ QDBusArgument “ keine Elemente mehr extrahiert werden können. Diese Funktion wird in der Regel bei „ QDBusArgument “-Objekten verwendet, die von den Funktionen „ beginMap()“ und „ beginArray()“ zurückgegeben werden.

void QDBusArgument::beginArray() const

Durchsucht das D-Bus-Array rekursiv, um die Extraktion der Array-Elemente zu ermöglichen.

Diese Funktion wird üblicherweise in Streaming-Operatoren von „ operator>> “ verwendet, wie im folgenden Beispiel gezeigt:

// 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;
}

Wenn der Typ, den Sie demarshallen möchten, ein ` QList ` oder eine der Qt-Containerklassen ist, die einen Template-Parameter akzeptieren, müssen Sie keine ` operator>> `-Funktion dafür deklarieren, da ` Qt D-Bus ` generische Templates bereitstellt, die das Demarshalling der Daten übernehmen. Dasselbe gilt für die Sequenzcontainer der STL, wie z. B. ` std::list`, ` std::vector` usw.

Siehe auch atEnd(), beginStructure() und beginMap().

void QDBusArgument::beginArray(QMetaType id)

Öffnet ein neues D-Bus-Array, das zum Anhängen von Elementen des Metatyps „ id “ geeignet ist.

Diese Funktion wird üblicherweise in Streaming-Operatoren für ` operator<< ` verwendet, wie im folgenden Beispiel gezeigt:

// 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;
}

Wenn der Typ, den Sie marshallen möchten, ein ` QList ` oder eine der Qt-Containerklassen ist, die einen Template-Parameter akzeptieren, müssen Sie keine ` operator<< `-Funktion dafür deklarieren, da ` Qt D-Bus ` generische Templates bereitstellt, die das Marshalling der Daten übernehmen. Dasselbe gilt für die Sequenzcontainer der STL, wie z. B. ` std::list`, ` std::vector` usw.

Siehe auch endArray(), beginStructure() und beginMap().

void QDBusArgument::beginMap() const

Greift rekursiv auf die D-Bus-Map zu, um die Elemente der Map zu extrahieren.

Diese Funktion wird üblicherweise in Streaming-Operatoren von „ operator>> “ verwendet, wie im folgenden Beispiel gezeigt:

// 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;
}

Wenn der Typ, den Sie demarshallen möchten, ein ` QMap ` oder ` QHash` ist, müssen Sie keine ` operator>> `-Funktion dafür deklarieren, da ` Qt D-Bus ` generische Vorlagen bereitstellt, die das Demarshalling der Daten übernehmen.

Siehe auch endMap(), beginStructure(), beginArray() und beginMapEntry().

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

Öffnet eine neue Qt D-Bus-Map, die zum Hinzufügen von Elementen geeignet ist. Maps sind Container, die einen Eintrag (den Schlüssel) mit einem anderen (dem Wert) verknüpfen, wie beispielsweise Qt’s „ QMap “ oder „ QHash “. Die IDs der Meta-Typen für Schlüssel und Wert der Map müssen jeweils in „ keyMetaType “ und „ valueMetaType “ übergeben werden.

Diese Funktion wird üblicherweise in Streaming-Operatoren von operator<< verwendet, wie im folgenden Beispiel gezeigt:

// 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;
}

Für assoziative Container wie QHash oder std::map müssen Sie in der Regel keine operator<< - oder operator>> -Funktion bereitstellen, da Qt D-Bus generische Vorlagen bereitstellt, die das Marshalling der Daten übernehmen.

Siehe auch ` endMap()`, ` beginStructure()`, ` beginArray()` und ` beginMapEntry()`.

void QDBusArgument::beginMapEntry()

Öffnet einen D-Bus-Map-Eintrag, in den Schlüssel- und Wert-Einträge hinzugefügt werden können. Diese Funktion ist nur gültig, wenn zuvor eine Map mit beginMap() geöffnet wurde.

Ein Anwendungsbeispiel für diese Funktion finden Sie unter ` beginMap()`.

Siehe auch „ endMapEntry()“ und „ beginMap()“.

void QDBusArgument::beginMapEntry() const

Greift rekursiv auf den D-Bus-Map-Eintrag zu, um das Schlüssel-Wert-Paar zu extrahieren.

Ein Beispiel für die übliche Verwendung dieser Funktion finden Sie unter beginMap().

Siehe auch endMapEntry() und beginMap().

void QDBusArgument::beginStructure()

Öffnet eine neue D-Bus-Struktur, an die neue Argumente angehängt werden können.

Diese Funktion wird üblicherweise in Streaming-Operatoren von „ operator<< “ verwendet, wie im folgenden Beispiel:

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

Strukturen können andere Strukturen enthalten, daher ist auch der folgende Code gültig:

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;
}

Siehe auch „ endStructure()“, „ beginArray()“ und „ beginMap()“.

void QDBusArgument::beginStructure() const

Öffnet eine D-Bus-Struktur, aus der Elemente extrahiert werden können.

Diese Funktion wird üblicherweise in Streaming-Operatoren von „ operator>> “ verwendet, wie im folgenden Beispiel:

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

Siehe auch endStructure(), beginArray() und beginMap().

QDBusArgument::ElementType QDBusArgument::currentType() const

Gibt die Klassifizierung des aktuellen Elementtyps zurück. Tritt beim Dekodieren des Typs ein Fehler auf oder ist das Argument am Ende angelangt, gibt diese Funktion „ QDBusArgument::UnknownType “ zurück.

Diese Funktion ist nur beim Demarshalling von Argumenten sinnvoll. Wird sie beim Marshalling verwendet, gibt sie immer „ UnknownType “ zurück.

void QDBusArgument::endArray()

Schließt ein D-Bus-Array, das mit ` beginArray()` geöffnet wurde. Diese Funktion muss genauso oft aufgerufen werden wie ` beginArray()`.

Siehe auch „ beginArray()“, „ endStructure()“ und „ endMap()“.

void QDBusArgument::endArray() const

Schließt das D-Bus-Array und ermöglicht das Abrufen des nächsten Elements nach dem Array.

Siehe auch beginArray().

void QDBusArgument::endMap()

Schließt eine mit ` beginMap()` geöffnete D-Bus-Zuordnung. Diese Funktion muss genauso oft aufgerufen werden, wie ` beginMap()` aufgerufen wurde.

Siehe auch „ beginMap()“, „ endStructure()“ und „ endArray()“.

void QDBusArgument::endMap() const

Schließt die D-Bus-Map und ermöglicht das Extrahieren des nächsten Elements nach der Map.

Siehe auch beginMap().

void QDBusArgument::endMapEntry()

Schließt einen D-Bus-Map-Eintrag, der mit ` beginMapEntry()` geöffnet wurde. Diese Funktion muss genauso oft aufgerufen werden, wie ` beginMapEntry()` aufgerufen wurde.

Siehe auch beginMapEntry().

void QDBusArgument::endMapEntry() const

Schließt den D-Bus-Map-Eintrag und ermöglicht das Extrahieren des nächsten Elements in der Map.

Siehe auch beginMapEntry().

void QDBusArgument::endStructure()

Schließt eine mit ` beginStructure()` geöffnete D-Bus-Struktur. Diese Funktion muss genauso oft aufgerufen werden, wie ` beginStructure()` aufgerufen wurde.

Siehe auch „ beginStructure()“, „ endArray()“ und „ endMap()“.

void QDBusArgument::endStructure() const

Schließt die D-Bus-Struktur und ermöglicht das Extrahieren des nächsten Elements nach der Struktur.

Siehe auch beginStructure().

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

Tauscht dieses Argument mit „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

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

Fügt den Primitivwert „ arg “ vom Typ „ BYTE “ an den D-Bus-Stream an.

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

Fügt den primitiven Wert „ arg “ vom Typ „ BOOLEAN “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den unter arg als ARRAY of BYTE angegebenen Typ „ QByteArray “ an den D-Bus-Stream an.

QStringList und QByteArray sind die einzigen beiden nicht-primitiven Typen, die von QDBusArgument direkt unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.

Andere Arrays werden über zusammengesetzte Typen in Qt D-Bus unterstützt.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ VARIANT “ an den D-Bus-Stream an.

Ein D-Bus-Variantentyp kann jeden beliebigen Typ enthalten, einschließlich anderer Varianten. Er ähnelt dem Qt XML-Typ „ QVariant “.

Dies ist eine überladene Funktion.

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

Fügt den Primitivwert „ arg “ vom Typ „ STRING “ (Unicode-Zeichenkette) an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den unter arg als ARRAY of STRING angegebenen „ QStringList “ an den D-Bus-Stream an.

QStringList und QByteArray sind die einzigen beiden nicht-primitiven Typen, die von QDBusArgument direkt unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.

Andere Arrays werden über zusammengesetzte Typen in Qt D-Bus unterstützt.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ DOUBLE “ (Gleitkomma mit doppelter Genauigkeit) an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ INT32 “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ INT64 “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ UINT64 “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ INT16 “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ UINT32 “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Fügt den primitiven Wert „ arg “ vom Typ „ UINT16 “ an den D-Bus-Stream an.

Dies ist eine überladene Funktion.

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

Kopiert das Objekt „ other “ QDBusArgument in dieses Objekt.

Beide Objekte weisen daher ab diesem Zeitpunkt denselben Zustand auf. QDBusArguments werden explizit gemeinsam genutzt, sodass sich jede Änderung an einer der beiden Kopien auch auf die andere auswirkt.

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

Extrahiert ein D-Bus-Primitiv-Argument vom Typ „ BYTE “ aus dem D-Bus-Stream und speichert es in „ arg “.

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

Extrahiert ein Byte-Array aus dem D-Bus-Stream und gibt es als ` QByteArray` zurück.

QStringList und ` QByteArray ` sind die einzigen beiden nicht-primitiven Typen, die von ` QDBusArgument ` direkt unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.

Andere Arrays werden über zusammengesetzte Typen in ` Qt D-Bus` unterstützt.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ VARIANT “ aus dem D-Bus-Stream.

Ein D-Bus-Variantentyp kann jeden beliebigen Typ enthalten, einschließlich anderer Varianten. Er ähnelt dem Qt XML-Typ ` QVariant `.

Falls die Variante einen Typ enthält, der von ` QDBusArgument` nicht direkt unterstützt wird, enthält der Wert des zurückgegebenen ` QDBusVariant ` ein weiteres ` QDBusArgument`. Es liegt in Ihrer Verantwortung, dieses weiter in einen anderen Typ zu demarshallen.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ STRING “ (Unicode-Zeichenkette) aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein Array von Zeichenketten aus dem D-Bus-Stream und gibt es als ` QStringList` zurück.

QStringList und ` QByteArray ` sind die einzigen beiden nicht-primitiven Typen, die von ` QDBusArgument ` direkt unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.

Andere Arrays werden über zusammengesetzte Typen in ` Qt D-Bus` unterstützt.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ BOOLEAN “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitiv-Argument vom Typ „ DOUBLE “ (Gleitkommazahl mit doppelter Genauigkeit) aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ INT32 “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ INT64 “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitiv-Argument vom Typ „ UINT64 “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitiv-Argument vom Typ „ INT16 “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ UINT32 “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

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

Extrahiert ein D-Bus-Primitivargument vom Typ „ UINT16 “ aus dem D-Bus-Stream.

Dies ist eine überladene Funktion.

Verwandte Nicht-Mitglieder

template <typename T> QMetaType qDBusRegisterMetaType()

Registriert „ T “ im „Qt D-Bus “-Typsystem und im Qt-„ meta-type system “, sofern es noch nicht registriert ist.

Um einen Typ zu registrieren, muss er mit dem Makro ` Q_DECLARE_METATYPE()` als Metatyp deklariert und anschließend wie im folgenden Beispiel registriert werden:

#include <QDBusMetaType>

qDBusRegisterMetaType<MyClass>();

Wenn „ T “ nicht zu den Containerklassen von Qt gehört, müssen die Streaming-Operatoren „ operator<< “ und „ operator>> “ zwischen „ T “ und „ QDBusArgument “ bereits deklariert sein. Weitere Informationen zur Deklaration solcher Typen finden Sie auf der Seite zum „Qt D-Bus “-Typsystem.

Diese Funktion gibt die Qt-Metatyp-ID für den Typ zurück (derselbe Wert, der von ` qRegisterMetaType()` zurückgegeben wird).

Hinweis: Die Funktion, dass ein ` T `, der von einem streambarem Typ (einschließlich der Container ` QList`, ` QHash ` oder ` QMap`) erbt, ohne Angabe benutzerdefinierter ` operator<< ` und ` operator>> ` gestreamt werden kann, ist ab Qt 5.7 veraltet, da sie alles in ` T ` außer der Basisklasse ignoriert. Es gibt keine Fehlermeldung. Sie sollten diese Operatoren stets für alle Typen bereitstellen, die Sie streamen möchten, und sich nicht auf die von Qt bereitgestellten Stream-Operatoren für Basisklassen verlassen.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch „Qt D-Bus -Typsystem“, „ qRegisterMetaType()“ und „ QMetaType “.

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

Versucht, den Inhalt von ` arg ` in den Typ ` T` zu demarshallen. Beispiel:

MyType item = qdbus_cast<Type>(argument);

Beachten Sie, dass dies dem Folgenden entspricht:

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.