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.
Konstante | Wert | Beschreibung |
---|---|---|
QNdefRecord::Empty | 0x00 | Ein leerer NDEF-Datensatz; der Datensatz enthält keine Nutzlast |
QNdefRecord::NfcRtd | 0x01 | Der NDEF-Datensatztyp wird durch eine NFC-RTD-Spezifikation definiert |
QNdefRecord::Mime | 0x02 | Der NDEF-Datensatztyp folgt dem in RFC 2046 beschriebenen Konstrukt. |
QNdefRecord::Uri | 0x03 | Der NDEF-Datensatztyp folgt dem Konstrukt, das in RFC 3986 beschrieben ist. |
QNdefRecord::ExternalRtd | 0x04 | Der NDEF-Datensatztyp entspricht dem in der NFC-RTD-Spezifikation beschriebenen Konstrukt für externe Typnamen. |
QNdefRecord::Unknown | 0x05 | Der 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.