QNdefRecord Class

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

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

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)

Detaillierte 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 zu ermitteln und festzulegen.

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

Verwenden Sie id() und setId(), um die ID des NDEF-Datensatzes zu ermitteln und einzustellen.

Verwenden Sie payload() und setPayload(), um die Nutzlast des NDEF-Datensatzes zu ermitteln und zu setzen. isEmpty() kann verwendet werden, um zu testen, ob die Nutzlast leer ist.

QNdefRecord ist eine implizit gemeinsam genutzte Klasse. Das bedeutet, dass Sie effizient zwischen QNdefRecord und spezialisierten Record-Klassen konvertieren können. Die isRecordType() Template-Funktion kann verwendet werden, um zu testen, ob eine Konvertierung möglich ist. Das folgende Beispiel zeigt, wie man prüft, ob ein QNdefRecord ein NFC-RTD-Text-Datensatz ist und wie man die Textinformationen daraus extrahiert.

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

Erstellen von spezialisierten NDEF-Record-Klassen

Spezialisierte NDEF-Datensatzklassen lassen sich leicht mit den Makros Q_DECLARE_NDEF_RECORD() und Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD() erstellen. Das folgende Beispiel zeigt die Klassendeklaration des hypothetischen record-Typs example.com:f, der eine einzelne int-Eigenschaft 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 parsen und festlegen.

Dokumentation der Mitgliedstypen

enum QNdefRecord::TypeNameFormat

Diese Aufzählung beschreibt das Format des Typnamens eines NDEF-Datensatzes.

KonstanteWertBeschreibung
QNdefRecord::Empty0x00Ein leerer NDEF-Datensatz; der Datensatz enthält keine Nutzlast
QNdefRecord::NfcRtd0x01Der NDEF-Datensatztyp wird durch eine NFC-RTD-Spezifikation definiert
QNdefRecord::Mime0x02Der NDEF-Datensatztyp folgt dem in RFC 2046 beschriebenen Konstrukt.
QNdefRecord::Uri0x03Der NDEF-Datensatztyp folgt dem Konstrukt, das in RFC 3986 beschrieben ist.
QNdefRecord::ExternalRtd0x04Der NDEF-Datensatztyp entspricht dem in der NFC-RTD-Spezifikation beschriebenen Konstrukt 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()

Konstruiert einen neuen leeren NDEF-Datensatz.

QNdefRecord::QNdefRecord(const QNdefRecord &other)

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

[noexcept] QNdefRecord::~QNdefRecord()

Zerstört den NDEF-Datensatz.

[since 6.2] void QNdefRecord::clear()

Löscht den NDEF-Datensatz.

Ein Aufruf von isEmpty() gibt true für einen gelöschten Datensatz zurück. Der Datensatz type() 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 Nutzlast enthält; andernfalls wird false zurückgegeben.

Dies ist gleichbedeutend mit dem Aufruf von payload().isEmpty().

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

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

QByteArray QNdefRecord::payload() const

Gibt die Nutzlast 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 Nutzlast des NDEF-Datensatzes auf payload.

Siehe auch payload().

void QNdefRecord::setType(const QByteArray &type)

Setzt den Typ des NDEF-Datensatzes auf type.

Siehe auch type().

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

Setzt das Format des Typnamens des NDEF-Datensatzes auf typeNameFormat.

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 Format des Typnamens des NDEF-Datensatzes zurück.

Siehe auch setTypeNameFormat().

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

Gibt true zurück, wenn dieser NDEF-Datensatz nicht gleich other ist; 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-Datensatzklasse verwendet werden.

className 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 example.com:f und nicht urn :nfc:ext:example.com:f.

Siehe den Abschnitt Creating specialized NDEF record classes für weitere Einzelheiten.

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 ist der Name der spezialisierten Klasse, typeNameFormat ist die entsprechende QNdefRecord::TypeNameFormat für den benutzerdefinierten Typ und type ist der Typ ohne die NID- oder NSS-Präfixe. Das heißt example.com:f und nicht urn :nfc:ext:example.com:f. initialPayload ist die anfängliche Nutzlast eines leeren Datensatzes, es muss ein QByteArray oder ein Typ sein, der implizit in einen QByteArray umgewandelt werden kann.

Siehe den Abschnitt über Creating specialized NDEF record classes für Details.

Siehe auch Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD().

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