Sur cette page

QNdefRecord Class

La classe QNdefRecord fournit un enregistrement NFC NDEF. En savoir plus...

En-tête : #include <QNdefRecord>
CMake : find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake : QT += nfc
Hérité par :

QNdefNfcIconRecord, QNdefNfcSmartPosterRecord, QNdefNfcTextRecord, et QNdefNfcUriRecord

Types publics

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

Fonctions publiques

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

Macros

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

Description détaillée

La classe QNdefRecord et ses classes dérivées sont utilisées pour analyser le contenu des fichiers « NDEF messages » et créer de nouveaux messages NDEF.

Utilisez les méthodes ` typeNameFormat()` et ` setTypeNameFormat()` pour récupérer et définir le format du nom de type de l'enregistrement NDEF.

Utilisez les méthodes ` type()` et ` setType()` pour récupérer et définir le type de l'enregistrement NDEF.

Utilisez les méthodes id() et setId() pour récupérer et définir l'identifiant de l'enregistrement NDEF.

Utilisez les méthodes payload() et setPayload() pour récupérer et définir la charge utile de l'enregistrement NDEF. La méthode isEmpty() permet de vérifier si la charge utile est vide.

QNdefRecord est une classe implicitement partagée. Cela signifie que vous pouvez effectuer efficacement des conversions entre QNdefRecord et des classes d’enregistrements spécialisées. La fonction modèle isRecordType() permet de vérifier si une conversion est possible. L’exemple suivant montre comment vérifier si un objet QNdefRecord est un enregistrement NFC RTD Text et en extraire les informations textuelles.

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

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

Création de classes d’enregistrements NDEF spécialisées

Les classes d'enregistrements NDEF spécialisées peuvent être facilement créées à l'aide des macros Q_DECLARE_NDEF_RECORD() et Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(). L'exemple suivant montre la déclaration de classe du type d'enregistrement hypothétique example.com:f, qui encapsule une seule propriété de type int nommée foo.

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")

Le développeur n'a qu'à fournir les implémentations des fonctions foo() et setFoo() qui analysent et définissent le contenu de la charge utile de l'enregistrement NDEF.

Documentation sur les types de membres

enum QNdefRecord::TypeNameFormat

Cette énumération décrit le format du nom de type d'un enregistrement NDEF.

ConstanteValeurDescription
QNdefRecord::Empty0x00Enregistrement NDEF vide ; l'enregistrement ne contient pas de charge utile
QNdefRecord::NfcRtd0x01Le type d'enregistrement NDEF est défini par une spécification NFC RTD
QNdefRecord::Mime0x02Le type d’enregistrement NDEF suit la structure décrite dans la RFC 2046
QNdefRecord::Uri0x03Le type d’enregistrement NDEF suit la structure décrite dans la RFC 3986
QNdefRecord::ExternalRtd0x04Le type d’enregistrement NDEF respecte la structure définie pour les noms de types externes dans la spécification NFC RTD
QNdefRecord::Unknown0x05Le type de l'enregistrement est inconnu et doit être traité de la même manière qu'un contenu de type MIME « application/octet-stream » en l'absence de contexte supplémentaire

Documentation des fonctions membres

QNdefRecord::QNdefRecord()

Crée un nouvel enregistrement NDEF vide.

QNdefRecord::QNdefRecord(const QNdefRecord &other)

Crée un nouvel enregistrement NDEF qui est une copie de other.

[noexcept] QNdefRecord::~QNdefRecord()

Supprime l'enregistrement NDEF.

[since 6.2] void QNdefRecord::clear()

Effacer l'enregistrement NDEF.

Un appel à la fonction ` isEmpty()` renvoie ` true ` pour un enregistrement effacé. La propriété ` type()` de l'enregistrement est définie sur ` Empty`.

Cette fonction a été introduite dans Qt 6.2.

QByteArray QNdefRecord::id() const

Renvoie l'identifiant de l'enregistrement NDEF.

Voir également setId().

bool QNdefRecord::isEmpty() const

Renvoie « true » si l'enregistrement NDEF contient une charge utile vide ; sinon, renvoie « false ».

Cela revient à appeler la méthode payload().isEmpty().

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

Renvoie « true » si l'enregistrement NDEF correspond au type d'enregistrement spécifié ; sinon, renvoie « false ».

QByteArray QNdefRecord::payload() const

Renvoie la charge utile de l'enregistrement NDEF.

Voir également setPayload().

void QNdefRecord::setId(const QByteArray &id)

Définit l'identifiant de l'enregistrement NDEF sur « id ».

Voir également id().

void QNdefRecord::setPayload(const QByteArray &payload)

Définit la charge utile de l'enregistrement NDEF sur payload.

Voir également payload().

void QNdefRecord::setType(const QByteArray &type)

Définit le type de l'enregistrement NDEF sur « type ».

Voir également type().

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

Définit le format du nom de type de l'enregistrement NDEF sur « typeNameFormat ».

Voir également typeNameFormat().

QByteArray QNdefRecord::type() const

Renvoie le type de l'enregistrement NDEF.

Voir également setType().

QNdefRecord::TypeNameFormat QNdefRecord::typeNameFormat() const

Renvoie le nom du type au format de l'enregistrement NDEF.

Voir également setTypeNameFormat().

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

Renvoie « true » si cet enregistrement NDEF n'est pas égal à « other » ; sinon, renvoie « false ».

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

Attribue cet enregistrement NDEF à other.

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

Renvoie « true » si « other » et cet enregistrement NDEF sont identiques. Sinon, renvoie « false ».

Documentation des macros

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(className, typeNameFormat, type)

Cette macro déclare une spécialisation de modèle pour la fonction ` QNdefRecord::isRecordType()`.

Cette macro doit être utilisée dans le fichier d’en-tête, immédiatement après la définition d’une classe d’enregistrement NDEF spécialisée.

className est le nom de la classe spécialisée, typeNameFormat correspond à l’ QNdefRecord::TypeNameFormat appropriée pour le type personnalisé et type désigne le type sans les préfixes NID ni NSS. Il s’agit donc de example.com:f et non de urn:nfc:ext:example.com:f.

Pour plus de détails, consultez la section consacrée à ` Creating specialized NDEF record classes `.

Voir également Q_DECLARE_NDEF_RECORD().

Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)

Cette macro déclare des constructeurs par défaut et de copie pour les classes d'enregistrements NDEF spécialisées.

className est le nom de la classe spécialisée, typeNameFormat correspond à l’ QNdefRecord::TypeNameFormat appropriée pour le type personnalisé et type désigne le type sans les préfixes NID ou NSS. Il s’agit donc de example.com:f et non de urn:nfc:ext:example.com:f. initialPayload correspond à la charge utile initiale d’un enregistrement vide ; il doit s’agir d’un QByteArray ou d’un type pouvant être implicitement converti en QByteArray.

Voir la section sur Creating specialized NDEF record classes pour plus de détails.

Voir également 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.