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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QNdefRecord::Empty | 0x00 | Ein leerer NDEF-Datensatz; der Datensatz enthält keine Nutzdaten |
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 Aufbau |
QNdefRecord::Uri | 0x03 | Der NDEF-Datensatztyp folgt der in RFC 3986 beschriebenen Struktur |
QNdefRecord::ExternalRtd | 0x04 | Der NDEF-Datensatztyp folgt der in der NFC-RTD-Spezifikation beschriebenen Struktur 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()
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.