Auf dieser Seite

QNdefRecord Class

Die Klasse „QNdefRecord“ stellt einen NFC-NDEF-Datensatz bereit. Mehr...

Header: #include <QNdefRecord>
CMake: find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake: QT += nfc
Vererbt an:

QNdefNfcIconRecord, QNdefNfcSmartPosterRecord, QNdefNfcTextRecord und QNdefNfcUriRecord

Öffentliche Typen

enum TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown }

Öffentliche Funktionen

QNdefRecord()
QNdefRecord(const QNdefRecord &other)
~QNdefRecord()
(since 6.2) void clear()
QByteArray id() const
bool isEmpty() const
bool isRecordType() const
QByteArray payload() const
void setId(const QByteArray &id)
void setPayload(const QByteArray &payload)
void setType(const QByteArray &type)
void setTypeNameFormat(QNdefRecord::TypeNameFormat typeNameFormat)
QByteArray type() const
QNdefRecord::TypeNameFormat typeNameFormat() const
bool operator!=(const QNdefRecord &other) const
QNdefRecord &operator=(const QNdefRecord &other)
bool operator==(const QNdefRecord &other) const

Makros

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(className, typeNameFormat, type)
Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)

Ausführliche Beschreibung

QNdefRecord und abgeleitete Klassen werden verwendet, um den Inhalt von „ NDEF messages “ zu analysieren und neue NDEF-Nachrichten zu erstellen.

Verwenden Sie „ typeNameFormat()“ und „ setTypeNameFormat()“, um das Format des Typnamens des NDEF-Datensatzes abzurufen bzw. festzulegen.

Verwenden Sie ` type()` und ` setType()`, um den Typ des NDEF-Datensatzes abzurufen und festzulegen.

Verwenden Sie ` id()` und ` setId()`, um die ID des NDEF-Datensatzes abzurufen und festzulegen.

Verwenden Sie „ payload()“ und „ setPayload()“, um die Nutzdaten des NDEF-Datensatzes abzurufen und festzulegen. Mit „ isEmpty()“ können Sie prüfen, ob die Nutzdaten leer sind.

„QNdefRecord“ ist eine implizit gemeinsam genutzte Klasse. Das bedeutet, dass Sie effizient zwischen „QNdefRecord“ und spezialisierten Datensatzklassen konvertieren können. Mit der Template-Funktion „ isRecordType()“ lässt sich prüfen, ob eine Konvertierung möglich ist. Das folgende Beispiel zeigt, wie Sie prüfen können, ob ein „QNdefRecord“ ein NFC-RTD-Text-Datensatz ist, und wie Sie die Textinformationen daraus extrahieren können.

if (record.isRecordType<QNdefNfcTextRecord>()) {
    QNdefNfcTextRecord textRecord(record);

    qDebug() << textRecord.text();
}

Erstellen spezieller NDEF-Datensatzklassen

Spezielle NDEF-Datensatzklassen lassen sich ganz einfach mit den Makros „ Q_DECLARE_NDEF_RECORD()“ und „ Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD()“ erstellen. Das folgende Beispiel zeigt die Klassendeklaration des hypothetischen Datensatztyps „example.com:f“, der eine einzelne „int“-Eigenschaft namens „foo“ kapselt.

class ExampleComF : public QNdefRecord
{
public:
    Q_DECLARE_NDEF_RECORD(ExampleComF, QNdefRecord::ExternalRtd, "example.com:f",
                          QByteArray(sizeof(int), char(0)))

    int foo() const;
    void setFoo(int v);
};

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(ExampleComF, QNdefRecord::ExternalRtd, "example.com:f")

Der Entwickler muss lediglich Implementierungen für die Funktionen „ foo() “ und „ setFoo() “ bereitstellen, die den Inhalt der Nutzdaten des NDEF-Datensatzes analysieren und festlegen.

Dokumentation zu Mitgliedstypen

enum QNdefRecord::TypeNameFormat

Diese Enumeration beschreibt das Format des Typnamens eines NDEF-Datensatzes.

KonstanteWertBeschreibung
QNdefRecord::Empty0x00Ein leerer NDEF-Datensatz; der Datensatz enthält keine Nutzdaten
QNdefRecord::NfcRtd0x01Der NDEF-Datensatztyp wird durch eine NFC-RTD-Spezifikation definiert
QNdefRecord::Mime0x02Der NDEF-Datensatztyp folgt dem in RFC 2046 beschriebenen Aufbau
QNdefRecord::Uri0x03Der NDEF-Datensatztyp folgt der in RFC 3986 beschriebenen Struktur
QNdefRecord::ExternalRtd0x04Der NDEF-Datensatztyp folgt der in der NFC-RTD-Spezifikation beschriebenen Struktur für externe Typnamen
QNdefRecord::Unknown0x05Der Typ des Datensatzes ist unbekannt und sollte ohne weiteren Kontext ähnlich wie Inhalte mit dem MIME-Typ „application/octet-stream“ behandelt werden

Dokumentation der Mitgliedsfunktionen

QNdefRecord::QNdefRecord()

Erstellt einen neuen, leeren NDEF-Datensatz.

QNdefRecord::QNdefRecord(const QNdefRecord &other)

Erstellt einen neuen NDEF-Datensatz, der eine Kopie von other ist.

[noexcept] QNdefRecord::~QNdefRecord()

Löscht den NDEF-Datensatz.

[since 6.2] void QNdefRecord::clear()

Den NDEF-Datensatz löschen.

Ein Aufruf von ` isEmpty()` gibt bei einem gelöschten Datensatz den Wert ` true ` zurück. Die Eigenschaft ` type()` des Datensatzes wird auf ` Empty` gesetzt.

Diese Funktion wurde in Qt 6.2 eingeführt.

QByteArray QNdefRecord::id() const

Gibt die ID des NDEF-Datensatzes zurück.

Siehe auch „ setId()“.

bool QNdefRecord::isEmpty() const

Gibt „ true “ zurück, wenn der NDEF-Datensatz eine leere Nutzdatenmenge enthält; andernfalls wird „ false “ zurückgegeben.

Dies entspricht dem Aufruf von ` payload().isEmpty()`.

template <typename T> bool QNdefRecord::isRecordType() const

Gibt „ true “ zurück, wenn der NDEF-Datensatz vom angegebenen Datensatztyp ist; andernfalls wird „ false “ zurückgegeben.

QByteArray QNdefRecord::payload() const

Gibt die Nutzdaten des NDEF-Datensatzes zurück.

Siehe auch „ setPayload()“.

void QNdefRecord::setId(const QByteArray &id)

Setzt die ID des NDEF-Datensatzes auf „ id “.

Siehe auch id().

void QNdefRecord::setPayload(const QByteArray &payload)

Setzt die Nutzdaten des NDEF-Datensatzes auf „ payload “.

Siehe auch payload().

void QNdefRecord::setType(const QByteArray &type)

Legt den Typ des NDEF-Datensatzes auf „ type “ fest.

Siehe auch type().

void QNdefRecord::setTypeNameFormat(QNdefRecord::TypeNameFormat typeNameFormat)

Legt das Format des Typnamens des NDEF-Datensatzes auf „ typeNameFormat “ fest.

Siehe auch „ typeNameFormat()“.

QByteArray QNdefRecord::type() const

Gibt den Typ des NDEF-Datensatzes zurück.

Siehe auch „ setType()“.

QNdefRecord::TypeNameFormat QNdefRecord::typeNameFormat() const

Gibt das Typnamenformat des NDEF-Datensatzes zurück.

Siehe auch „ setTypeNameFormat()“.

bool QNdefRecord::operator!=(const QNdefRecord &other) const

Gibt „ true “ zurück, wenn dieser NDEF-Datensatz nicht mit „ other “ übereinstimmt; andernfalls wird „ false “ zurückgegeben.

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

Weist diesen NDEF-Datensatz „ other “ zu.

bool QNdefRecord::operator==(const QNdefRecord &other) const

Gibt „ true “ zurück, wenn „ other “ und dieser NDEF-Datensatz identisch sind. Andernfalls wird „ false “ zurückgegeben.

Makro-Dokumentation

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(className, typeNameFormat, type)

Dieses Makro deklariert eine Template-Spezialisierung für die Funktion ` QNdefRecord::isRecordType()`.

Dieses Makro sollte in der Header-Datei direkt nach der Definition einer spezialisierten NDEF-Record-Klasse verwendet werden.

className ist der Name der spezialisierten Klasse, „ typeNameFormat “ ist der entsprechende „ QNdefRecord::TypeNameFormat “ für den benutzerdefinierten Typ und „ type “ ist der Typ ohne die Präfixe „NID“ oder „NSS“. Das heißt „example.com:f “ und nicht „urn:nfc:ext:example.com:f“.

Weitere Informationen finden Sie im Abschnitt zu „ Creating specialized NDEF record classes “.

Siehe auch „ Q_DECLARE_NDEF_RECORD“ ().

Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)

Dieses Makro deklariert Standard- und Kopierkonstruktoren für spezialisierte NDEF-Datensatzklassen.

className „is“ ist der Name der spezialisierten Klasse, „ typeNameFormat “ ist die entsprechende „ QNdefRecord::TypeNameFormat “ für den benutzerdefinierten Typ und „ type “ ist der Typ ohne die Präfixe „NID“ oder „NSS“. Das heißt also „example.com:f“ und nicht „urn:nfc:ext:example.com:f“. „ initialPayload “ ist die anfängliche Nutzlast eines leeren Datensatzes; es muss sich um einen „ QByteArray “ oder einen Typ handeln, der implizit in einen „ QByteArray “ konvertiert werden kann.

Weitere Informationen finden Sie im Abschnitt „ Creating specialized NDEF record classes “.

Siehe auch Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD().

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