En esta página

QNdefRecord Class

La clase QNdefRecord proporciona un registro NDEF NFC. Más...

Cabecera: #include <QNdefRecord>
CMake: find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake: QT += nfc
Heredado por:

QNdefNfcIconRecord, QNdefNfcSmartPosterRecord, QNdefNfcTextRecord, y QNdefNfcUriRecord

Tipos públicos

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

Funciones públicas

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)

Descripción detallada

QNdefRecord y sus clases derivadas se utilizan para analizar el contenido de NDEF messages y crear nuevos mensajes NDEF.

Utilice typeNameFormat() y setTypeNameFormat() para obtener y establecer el formato del nombre de tipo del registro NDEF.

Utilice type() y setType() para obtener y establecer el tipo del registro NDEF.

Utilice id() y setId() para obtener y establecer el id del registro NDEF.

Utilice payload() y setPayload() para obtener y definir la carga útil del registro NDEF. isEmpty() puede utilizarse para comprobar si la carga útil está vacía.

QNdefRecord es una clase implícitamente compartida. Esto significa que puedes convertir eficientemente entre QNdefRecord y clases de registro especializadas. La función de plantilla isRecordType() puede utilizarse para comprobar si una conversión es posible. El siguiente ejemplo muestra cómo comprobar si un QNdefRecord es un registro de texto RTD NFC y extraer la información de texto del mismo.

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

Creación de clases de registro NDEF especializadas

Las clases de registro NDEF especializadas pueden crearse fácilmente con las macros Q_DECLARE_NDEF_RECORD() y Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(). El siguiente ejemplo muestra la declaración de clase del hipotético tipo de registro example.com:f que encapsula una única propiedad int 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")

El desarrollador sólo necesita proporcionar implementaciones para las funciones foo() y setFoo() que analizan y establecen el contenido de la carga útil del registro NDEF.

Documentación de los tipos de miembros

enum QNdefRecord::TypeNameFormat

Este enum describe el formato del nombre de tipo de un registro NDEF.

ConstanteValorDescripción
QNdefRecord::Empty0x00Un registro NDEF vacío, el registro no contiene una carga útil
QNdefRecord::NfcRtd0x01El tipo de registro NDEF está definido por una especificación RTD de NFC.
QNdefRecord::Mime0x02El tipo de registro NDEF sigue la estructura descrita en RFC 2046
QNdefRecord::Uri0x03El tipo de registro NDEF sigue la estructura descrita en RFC 3986
QNdefRecord::ExternalRtd0x04El tipo de registro NDEF sigue la estructura para nombres de tipos externos descrita en la especificación NFC RTD.
QNdefRecord::Unknown0x05El tipo de registro es desconocido y debe tratarse de forma similar al contenido con tipo MIME "application/octet-stream" sin más contexto.

Documentación de las funciones de los miembros

QNdefRecord::QNdefRecord()

Crea un nuevo registro NDEF vacío.

QNdefRecord::QNdefRecord(const QNdefRecord &other)

Construye un nuevo registro NDEF que es una copia de other.

[noexcept] QNdefRecord::~QNdefRecord()

Destruye el registro NDEF.

[since 6.2] void QNdefRecord::clear()

Borra el registro NDEF.

Una llamada a isEmpty() devuelve true para un registro borrado. El registro type() se establece en Empty.

Esta función se introdujo en Qt 6.2.

QByteArray QNdefRecord::id() const

Devuelve el id del registro NDEF.

Véase también setId().

bool QNdefRecord::isEmpty() const

Devuelve true si el registro NDEF contiene una carga útil vacía; en caso contrario, devuelve false.

Esto equivale a llamar a payload().isEmpty().

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

Devuelve true si el registro NDEF es del tipo de registro especificado; en caso contrario devuelve false.

QByteArray QNdefRecord::payload() const

Devuelve la carga útil del registro NDEF.

Véase también setPayload().

void QNdefRecord::setId(const QByteArray &id)

Establece el id del registro NDEF en id.

Véase también id().

void QNdefRecord::setPayload(const QByteArray &payload)

Establece la carga útil del registro NDEF en payload.

Véase también payload().

void QNdefRecord::setType(const QByteArray &type)

Establece el tipo del registro NDEF en type.

Véase también type().

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

Establece el formato del nombre de tipo del registro NDEF en typeNameFormat.

Véase también typeNameFormat().

QByteArray QNdefRecord::type() const

Devuelve el tipo del registro NDEF.

Véase también setType().

QNdefRecord::TypeNameFormat QNdefRecord::typeNameFormat() const

Devuelve el formato del nombre de tipo del registro NDEF.

Véase también setTypeNameFormat().

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

Devuelve true si este registro NDEF no es igual a other; en caso contrario devuelve false.

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

Asigna este registro NDEF a other.

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

Devuelve true si other y este registro NDEF son iguales. En caso contrario, devuelve false.

Documentación de macros

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(className, typeNameFormat, type)

Esta macro declara una especialización de plantilla para la función QNdefRecord::isRecordType().

Esta macro debe utilizarse en el archivo de cabecera directamente después de la definición de una clase especializada de registro NDEF.

className es el nombre de la clase especializada, typeNameFormat es el QNdefRecord::TypeNameFormat apropiado para el tipo personalizado y type es el tipo sin los prefijos NID o NSS. Es decir, ejemplo.com:f no urn :nfc:ext:ejemplo.com:f.

Consulte la sección Creating specialized NDEF record classes para obtener más información.

Véase también Q_DECLARE_NDEF_RECORD().

Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)

Esta macro declara constructores por defecto y de copia para clases especializadas de registros NDEF.

className es el nombre de la clase especializada, typeNameFormat es el QNdefRecord::TypeNameFormat apropiado para el tipo personalizado y type es el tipo sin los prefijos NID o NSS. Es decir, ejemplo.com:f no urn :nfc:ext:ejemplo.com:f. initialPayload es la carga útil inicial de un registro vacío, debe ser un QByteArray o un tipo que pueda convertirse implícitamente en un QByteArray.

Para más detalles, véase la sección Creating specialized NDEF record classes.

Véase también 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.