IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

QNdefRecord Class

The QNdefRecord class provides an NFC NDEF record.

This class was introduced in Qt 5.2.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

QNdefRecord Class

Detailed Description

QNdefRecord and derived classes are used to parse the contents of NDEF messages and create new NDEF messages.

Use typeNameFormat() and setTypeNameFormat() to get and set the type name format of the NDEF record.

Use type() and setType() to get and set the type of the NDEF record.

Use id() and setId() to get and set the id of the NDEF record.

Use payload() and setPayload() to get and set the NDEF record payload. isEmpty() can be used to test if the payload is empty.

QNdefRecord is an implicitly shared class. This means you can efficiently convert between QNdefRecord and specialized record classes. The isRecordType() template function can be used to test if a conversion is possible. The following example shows how to test if a QNdefRecord is an NFC RTD Text record and extract the text information from it.

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

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

Creating Specialized NDEF Record Classes

Specialized NDEF record classes can be easily created with the Q_DECLARE_NDEF_RECORD() and Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD() macros. The following example shows the class declaration of the hypothetical example.com:f record type that encapsulates a single int property foo.

 
Sélectionnez
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")

The developer only needs to provide implementations for the foo() and setFoo() functions that parse and set the contents of the NDEF record's payload.

Member Type Documentation

 

enum QNdefRecord::TypeNameFormat

This enum describes the type name format of an NDEF record.

Constant

Value

Description

QNdefRecord::Empty

0x00

An empty NDEF record, the record does not contain a payload

QNdefRecord::NfcRtd

0x01

The NDEF record type is defined by an NFC RTD Specification

QNdefRecord::Mime

0x02

The NDEF record type follows the construct described in RFC 2046

QNdefRecord::Uri

0x03

The NDEF record type follows the construct described in RFC 3986

QNdefRecord::ExternalRtd

0x04

The NDEF record type follows the construct for external type names described the NFC RTD Specification

QNdefRecord::Unknown

0x05

The type of the record is unknown and should be treated similar to content with MIME type 'application/octet-stream' without further context

Member Function Documentation

 

QNdefRecord::QNdefRecord()

Constructs a new empty NDEF record.

QNdefRecord::QNdefRecord(const QNdefRecord &other)

Constructs a new NDEF record that is a copy of other.

QNdefRecord::~QNdefRecord()

Destroys the NDEF record.

[since 6.2] void QNdefRecord::clear()

Clear the NDEF record.

An isEmpty() call returns true for a cleared record. The record type() is set to Empty.

This function was introduced in Qt 6.2.

QByteArray QNdefRecord::id() const

Returns the id of the NDEF record.

See Also

See also setId()

bool QNdefRecord::isEmpty() const

Returns true if the NDEF record contains an empty payload; otherwise returns false.

This is equivalent to calling payload().isEmpty().

bool QNdefRecord::isRecordType() const

Returns true if the NDEF record is of the specified record type; otherwise returns false.

QByteArray QNdefRecord::payload() const

Returns the payload of the NDEF record.

See Also

See also setPayload()

void QNdefRecord::setId(const QByteArray &id)

Sets the id of the NDEF record to id.

See Also

See also id()

void QNdefRecord::setPayload(const QByteArray &payload)

Sets the payload of the NDEF record to payload.

See Also

See also payload()

void QNdefRecord::setType(const QByteArray &type)

Sets the type of the NDEF record to type.

See Also

See also type()

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

Sets the type name format of the NDEF record to typeNameFormat.

See Also

See also typeNameFormat()

QByteArray QNdefRecord::type() const

Returns the type of the NDEF record.

See Also

See also setType()

QNdefRecord::TypeNameFormat QNdefRecord::typeNameFormat() const

Returns the type name format of the NDEF record.

See Also

See also setTypeNameFormat()

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

Returns true if this NDEF record does not equal other; otherwise return false.

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

Assigns this NDEF record to other.

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

Returns true if other and this NDEF record are the same. Otherwise returns false.

Macro Documentation

 

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(className, typeNameFormat, type)

This macro declares a template specialization for the QNdefRecord::isRecordType() function.

This macro should be used in the header file directly after the definition of a specialized NDEF record class.

className is the name of the specialized class, typeNameFormat is the appropriate QNdefRecord::TypeNameFormat for the custom type and type is the type without the NID or NSS prefixes. That is example.com:f not urn:nfc:ext:example.com:f.

See the section on Creating specialized NDEF record classes for details.

See Also

Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)

This macro declares default and copy constructors for specialized NDEF record classes.

className is the name of the specialized class, typeNameFormat is the appropriate QNdefRecord::TypeNameFormat for the custom type and type is the type without the NID or NSS prefixes. That is example.com:f not urn:nfc:ext:example.com:f. initialPayload is the initial payload of an empty record, it must be a QByteArray or a type that can be implicitly converted into a QByteArray.

See the section on Creating specialized NDEF record classes for details.

See Also

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+