QDBusArgument Class
Die Klasse QDBusArgument wird verwendet, um D-Bus-Argumente zu marshallieren und zu demarshallieren. Mehr...
Kopfzeile: | #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 |
Verwandte Nicht-Mitglieder
QMetaType | qDBusRegisterMetaType() |
T | qdbus_cast(const QDBusArgument &arg) |
Detaillierte Beschreibung
Die Klasse wird verwendet, um Argumente über D-Bus an entfernte Anwendungen zu senden und sie zurück zu empfangen. D-Bus bietet ein erweiterbares Typsystem, das auf einigen 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, die Funktionen zum Marshall und Demarshall der primitiven Typen bereitstellt. Die zusammengesetzten Typen werden dann durch Assoziation von einem oder mehreren der primitiven Typen in Arrays, Dictionaries oder Strukturen erstellt.
Das folgende Beispiel veranschaulicht, wie eine Struktur, die eine ganze Zahl und eine Zeichenkette enthält, mit Hilfe 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 mit qDBusRegisterMetaType() registriert werden, bevor er mit QDBusArgument verwendet werden kann. Daher sollten Sie irgendwo in Ihrem Programm den folgenden Code einfügen:
qDBusRegisterMetaType<MyStructure>();
Sobald ein Typ registriert ist, kann er in ausgehenden Methodenaufrufen (mit QDBusAbstractInterface::call()), Signalemissionen von registrierten Objekten oder in eingehenden Aufrufen von entfernten Anwendungen verwendet werden.
Es ist wichtig zu beachten, dass die Streaming-Funktionen operator<<
und operator>>
im Falle von Strukturen immer die gleiche Anzahl von Einträgen erzeugen müssen, sowohl beim Lesen als auch beim Schreiben (Marshalling und Demarshalling), andernfalls können Aufrufe und Signale unbemerkt fehlschlagen.
Das folgende Beispiel veranschaulicht diese falsche Verwendung im Zusammenhang mit einer Klasse, die ungültige Daten enthalten kann:
//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 operator<<
als auch die operator>>
Funktionen eine unterschiedliche Anzahl von Lese-/Schreibvorgängen erzeugen. Dies kann das Qt D-Bus Typsystem verwirren und sollte vermieden werden.
Siehe auch QDBusAbstractInterface, Das Qt D-Bus Typsystem, Verwendung von Adaptern und qdbus_cast().
Dokumentation der Mitgliedstypen
enum QDBusArgument::ElementType
Diese Aufzählung beschreibt den Typ des Elements, das das Argument enthält.
Konstante | Wert | Beschreibung |
---|---|---|
QDBusArgument::BasicType | 0 | Ein Basiselement, das von QVariant verstanden wird. Die folgenden Typen gelten als Grundelemente: bool, byte, short, ushort, int, uint, qint64, quint64, double, QString, QByteArray, QDBusObjectPath, QDBusSignature |
QDBusArgument::VariantType | 1 | Das Variantenelement (QDBusVariant) |
QDBusArgument::ArrayType | 2 | Ein Array-Element, normalerweise dargestellt durch QList<T>. Hinweis: QByteArray und assoziative Maps werden nicht als Arrays betrachtet, auch wenn das D-Bus-Protokoll sie als solche transportiert. |
QDBusArgument::StructureType | 3 | Ein benutzerdefinierter Typ, der durch eine Struktur dargestellt wird, wie QDateTime, QPoint, usw. |
QDBusArgument::MapType | 4 | Ein assoziativer Container, wie QMap<Schlüssel, Wert> oder QHash<Schlüssel, Wert> |
QDBusArgument::MapEntryType | 5 | Ein Eintrag in einem assoziativen Container: sowohl der Schlüssel als auch der Wert bilden einen Map-Eintragstyp. |
QDBusArgument::UnknownType | -1 | Der Typ ist unbekannt oder wir haben das Ende der Liste erreicht. |
Siehe auch currentType().
Dokumentation der Mitgliedsfunktionen
QDBusArgument::QDBusArgument()
Konstruiert ein leeres QDBusArgument-Argument.
Ein leeres QDBusArgument-Objekt erlaubt weder das Lesen noch das Schreiben.
QDBusArgument::QDBusArgument(const QDBusArgument &other)
Konstruiert eine Kopie des other QDBusArgument-Objekts.
Beide Objekte enthalten daher ab diesem Zeitpunkt denselben Zustand. QDBusArguments werden explizit gemeinsam genutzt, daher wirkt sich jede Änderung an einer Kopie auch auf die andere aus.
[noexcept]
QDBusArgument::~QDBusArgument()
Beseitigt die mit diesem QDBusArgument Objekt verbundenen Ressourcen.
QVariant QDBusArgument::asVariant() const
Gibt das aktuelle Argument in Form eines QVariant zurück. Grundtypen werden dekodiert und in QVariant zurückgegeben, aber für komplexe Typen gibt diese Funktion ein QDBusArgument Objekt in QVariant zurück. Es liegt in der Verantwortung des Aufrufers, das Argument zu dekodieren (z. B. durch Aufruf von asVariant()).
Wenn das aktuelle Argument beispielsweise ein INT32 ist, gibt diese Funktion ein QVariant mit einem Argument des Typs 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 gibt es keine weiteren Argumente mehr zu dekodieren (d.h. wir sind 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 es keine weiteren Elemente aus diesem QDBusArgument zu extrahieren gibt. Diese Funktion wird normalerweise in QDBusArgument Objekten verwendet, die von beginMap() und beginArray() zurückgegeben werden.
void QDBusArgument::beginArray() const
Rekursiert in das D-Bus-Array, um die Extraktion der Array-Elemente zu ermöglichen.
Diese Funktion wird normalerweise in operator>>
Streaming Operatoren verwendet, wie im folgenden Beispiel:
// 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 demarshallieren wollen, ein QList oder eine der Qt-Containerklassen ist, die einen Template-Parameter annehmen, müssen Sie keine operator>>
Funktion dafür deklarieren, da Qt D-Bus generische Templates bereitstellt, die die Aufgabe des Demarshallierens der Daten übernehmen. Das Gleiche gilt für die Sequenz-Container der STL, wie std::list
, std::vector
, usw.
Siehe auch atEnd(), beginStructure(), und beginMap().
void QDBusArgument::beginArray(QMetaType id)
Öffnet ein neues D-Bus-Array, das für das Anhängen von Elementen des Meta-Typs id geeignet ist.
Diese Funktion wird normalerweise in operator<<
Streaming-Operatoren verwendet, wie im folgenden Beispiel:
// 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 marshallieren wollen, ein QList oder eine der Qt-Containerklassen ist, die einen Template-Parameter annehmen, brauchen Sie keine operator<<
Funktion dafür zu deklarieren, da Qt D-Bus generische Templates zur Verfügung stellt, die die Aufgabe des Marshalling der Daten übernehmen. Dasselbe gilt für die Sequenz-Container der STL, wie std::list
, std::vector
, etc.
Siehe auch endArray(), beginStructure(), und beginMap().
void QDBusArgument::beginMap() const
Rekursiert in die D-Bus-Map, um die Extraktion der Elemente der Map zu ermöglichen.
Diese Funktion wird normalerweise in operator>>
Streaming-Operatoren verwendet, wie im folgenden Beispiel:
// 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 demarshallieren wollen, ein QMap oder QHash ist, brauchen Sie keine operator>>
Funktion dafür zu deklarieren, da Qt D-Bus generische Templates zur Verfügung stellt, die die Aufgabe des Demarshallierens der Daten übernehmen.
Siehe auch endMap(), beginStructure(), beginArray(), und beginMapEntry().
void QDBusArgument::beginMap(QMetaType keyMetaType, QMetaType valueMetaType)
Öffnet eine neue D-Bus-Map, die zum Anhängen von Elementen geeignet ist. Maps sind Container, die einen Eintrag (den Schlüssel) mit einem anderen (dem Wert) verknüpfen, wie z.B. Qt's QMap oder QHash. Die ids der Schlüssel- und Wert-Metatypen der Map müssen in keyMetaType bzw. valueMetaType übergeben werden.
Diese Funktion wird normalerweise in operator<<
Streaming-Operatoren verwendet, wie im folgenden Beispiel:
// 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 Templates zur Verfügung stellt, die die Aufgabe des Marshalling der Daten übernehmen.
Siehe auch endMap(), beginStructure(), beginArray(), und beginMapEntry().
void QDBusArgument::beginMapEntry()
Öffnet einen D-Bus-Map-Eintrag, der zum Anhängen der Schlüssel- und Werteinträge geeignet ist. Diese Funktion ist nur gültig, wenn eine Map mit beginMap() geöffnet wurde.
Siehe beginMap() für ein Beispiel zur Verwendung dieser Funktion.
Siehe auch endMapEntry() und beginMap().
void QDBusArgument::beginMapEntry() const
Rekursiert in den D-Bus-Map-Eintrag, um die Extraktion des Schlüssel- und Wertepaares zu ermöglichen.
Siehe beginMap() für ein Beispiel, wie diese Funktion normalerweise verwendet wird.
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 normalerweise in operator<<
Streaming-Operatoren 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, so dass der folgende Code ebenfalls gültig ist:
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, die für die Extraktion von Elementen geeignet ist.
Diese Funktion wird normalerweise in operator>>
Streaming-Operatoren 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 ein Fehler bei der Dekodierung des Typs auf oder ist das Ende des Arguments erreicht, 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 mit beginArray() geöffnetes D-Bus-Array. Diese Funktion muss so oft aufgerufen werden, wie beginArray() aufgerufen wird.
Siehe auch beginArray(), endStructure(), und endMap().
void QDBusArgument::endArray() const
Schließt das D-Bus-Array und ermöglicht das Extrahieren des nächsten Elements nach dem Array.
Siehe auch beginArray().
void QDBusArgument::endMap()
Schließt eine mit beginMap() geöffnete D-Bus-Map. Diese Funktion muss genauso oft aufgerufen werden wie beginMap().
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 mit beginMapEntry() geöffneten D-Bus-Map-Eintrag. Diese Funktion muss so oft aufgerufen werden, wie beginMapEntry() aufgerufen wird.
Siehe auch beginMapEntry().
void QDBusArgument::endMapEntry() const
Schließt den D-Bus-Karteneintrag und ermöglicht das Extrahieren des nächsten Elements auf der Karte.
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().
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 nie fehl.
QDBusArgument &QDBusArgument::operator<<(uchar arg)
Hängt den primitiven Wert arg vom Typ BYTE
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(bool arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ BOOLEAN
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(const QByteArray &arg)
Dies ist eine überladene Funktion.
Hängt die QByteArray von arg als ARRAY of BYTE
an den D-Bus-Stream an.
QStringList und QByteArray sind die einzigen beiden nicht-primitiven Typen, die direkt von QDBusArgument unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.
Andere Arrays werden durch zusammengesetzte Typen in Qt D-Bus unterstützt.
QDBusArgument &QDBusArgument::operator<<(const QDBusVariant &arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ VARIANT
an den D-Bus-Stream an.
Ein D-Bus-Variantentyp kann jeden Typ enthalten, einschließlich anderer Varianten. Er ist ähnlich wie der Typ Qt QVariant.
QDBusArgument &QDBusArgument::operator<<(const QString &arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ STRING
(Unicode-Zeichenfolge) an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(const QStringList &arg)
Dies ist eine überladene Funktion.
Hängt die QStringList von arg als ARRAY of STRING
an den D-Bus-Stream an.
QStringList und QByteArray sind die einzigen beiden nicht-primitiven Typen, die direkt von QDBusArgument unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.
Andere Arrays werden durch zusammengesetzte Typen in Qt D-Bus unterstützt.
QDBusArgument &QDBusArgument::operator<<(double arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ DOUBLE
(double-precision floating-point) an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(int arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ INT32
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(qlonglong arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ INT64
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(qulonglong arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ UINT64
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(short arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ INT16
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(uint arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ UINT32
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator<<(ushort arg)
Dies ist eine überladene Funktion.
Hängt den primitiven Wert arg vom Typ UINT16
an den D-Bus-Stream an.
QDBusArgument &QDBusArgument::operator=(const QDBusArgument &other)
Kopiert das Objekt other QDBusArgument in dieses Objekt.
Beide Objekte enthalten daher ab diesem Zeitpunkt denselben Zustand. QDBusArguments werden explizit gemeinsam genutzt, daher wirkt sich jede Änderung an einer Kopie auch auf die andere aus.
const QDBusArgument &QDBusArgument::operator>>(uchar &arg) const
Extrahiert ein primitives D-Bus-Argument vom Typ BYTE
aus dem D-Bus-Stream und stellt es in arg ein.
const QDBusArgument &QDBusArgument::operator>>(QByteArray &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein Array von Bytes aus dem D-Bus-Stream und gibt es als QByteArray zurück.
QStringList und QByteArray sind die einzigen beiden nicht-primitiven Typen, die direkt von QDBusArgument unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.
Andere Arrays werden durch zusammengesetzte Typen in Qt D-Bus unterstützt.
const QDBusArgument &QDBusArgument::operator>>(QDBusVariant &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ VARIANT
aus dem D-Bus-Stream.
Ein D-Bus-Variantentyp kann jeden Typ enthalten, einschließlich anderer Varianten. Er ist vergleichbar mit dem Typ Qt QVariant.
Falls die Variante einen Typ enthält, der nicht direkt von QDBusArgument unterstützt wird, enthält der Wert des zurückgegebenen QDBusVariant ein anderes QDBusArgument. Es liegt in Ihrer Verantwortung, ihn in einen anderen Typ umzuwandeln.
const QDBusArgument &QDBusArgument::operator>>(QString &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ STRING
(Unicode-Zeichenfolge) aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(QStringList &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein Array von Strings aus dem D-Bus-Stream und gibt es als QStringList zurück.
QStringList und QByteArray sind die einzigen beiden nicht-primitiven Typen, die direkt von QDBusArgument unterstützt werden, da sie in Qt-Anwendungen weit verbreitet sind.
Andere Arrays werden durch zusammengesetzte Typen in Qt D-Bus unterstützt.
const QDBusArgument &QDBusArgument::operator>>(bool &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ BOOLEAN
aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(double &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ DOUBLE
(double-precision floating point) aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(int &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ INT32
aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(qlonglong &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ INT64
aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(qulonglong &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ UINT64
aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(short &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ INT16
aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(uint &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ UINT32
aus dem D-Bus-Stream.
const QDBusArgument &QDBusArgument::operator>>(ushort &arg) const
Dies ist eine überladene Funktion.
Extrahiert ein primitives D-Bus-Argument vom Typ UINT16
aus dem D-Bus-Stream.
Verwandte Nicht-Mitglieder
template <typename T> QMetaType qDBusRegisterMetaType()
Registriert T
mit dem Qt D-Bus Type System und dem Qt meta-type system, wenn es nicht bereits registriert ist.
Um einen Typ zu registrieren, muss er als Meta-Typ mit dem Q_DECLARE_METATYPE() Makro deklariert werden und dann wie im folgenden Beispiel registriert werden:
#include <QDBusMetaType> qDBusRegisterMetaType<MyClass>();
Wenn T
keine der Container-Klassen von Qt ist, müssen die operator<<
und operator>>
Streaming-Operatoren zwischen T
und QDBusArgument bereits deklariert sein. Siehe die Seite Qt D-Bus Type System für weitere Informationen zur Deklaration solcher Typen.
Diese Funktion gibt die Qt-Meta-Typ-ID für den Typ zurück (der gleiche Wert, der von qRegisterMetaType() zurückgegeben wird).
Hinweis: Die Funktion, dass ein T
, das einen streamable Typ erbt (einschließlich der Container QList, QHash oder QMap), gestreamt werden kann, ohne dass benutzerdefinierte operator<<
und operator>>
zur Verfügung gestellt werden müssen, ist seit Qt 5.7 veraltet, da sie alles in T
außer der Basisklasse ignoriert. Es gibt keine Diagnose. Sie sollten diese Operatoren immer für alle Typen, die Sie streamen möchten, bereitstellen und sich nicht auf die von Qt bereitgestellten Stream-Operatoren für Basisklassen verlassen.
Hinweis: Diese Funktion ist thread-sicher.
Siehe auch Qt D-Bus Type System, qRegisterMetaType(), und QMetaType.
template <typename T> T qdbus_cast(const QDBusArgument &arg)
Versucht, den Inhalt von arg in den Typ T
zu demarshallieren. Zum Beispiel:
MyType item = qdbus_cast<Type>(argument);
Beachten Sie, dass dies gleichbedeutend mit dem Folgenden ist:
MyType item; argument >> item;
© 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.