QNdefRecord 类

QNdefRecord 类提供了一个 NFC NDEF 记录。更多信息...

头文件 #include <QNdefRecord>
CMakefind_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmakeQT += nfc
继承自

QNdefNfcIconRecordQNdefNfcSmartPosterRecordQNdefNfcTextRecordQNdefNfcUriRecord

公共类型

枚举TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown }

公共函数

QNdefRecord()
QNdefRecord(const QNdefRecord &other)
~QNdefRecord()
(since 6.2) voidclear()
QByteArrayid() const
boolisEmpty() const
boolisRecordType() const
QByteArraypayload() const
voidsetId(const QByteArray &id)
voidsetPayload(const QByteArray &payload)
voidsetType(const QByteArray &type)
voidsetTypeNameFormat(QNdefRecord::TypeNameFormat typeNameFormat)
QByteArraytype() const
QNdefRecord::TypeNameFormattypeNameFormat() const
booloperator!=(const QNdefRecord &other) const
QNdefRecord &operator=(const QNdefRecord &other)
booloperator==(const QNdefRecord &other) const

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

详细描述

QNdefRecord 和其派生类用于解析 NDEF 消息 的内容以及创建新的 NDEF 消息。

使用 typeNameFormat() 和 setTypeNameFormat() 获取和设置 NDEF 记录的类型名称格式。

使用 type() 和 setType() 获取和设置 NDEF 记录的类型。

使用 id() 和 setId() 获取和设置 NDEF 记录的 ID。

使用payload() 和 setPayload() 来获取和设置NDEF记录的有效载荷。可以使用 isEmpty() 函数来检查有效载荷是否为空。

QNdefRecord 是一个隐式共享类。这意味着您可以在 QNdefRecord 和专业记录类之间高效转换。可以使用 isRecordType() 模板函数来测试转换是否可能。下面的示例展示了如何测试 QNdefRecord 是否为 NFC RTD 文本记录,并从中提取文本信息。

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

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

创建专业 NDEF 记录类

使用 Q_DECLARE_NDEF_RECORD() 和 Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD() 宏可以轻松创建专业 NDEF 记录类。以下示例展示了假设的 example.com:f 记录类型的类声明,该类型封装了单个 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")

开发者只需要提供实现 foo()setFoo() 函数,这些函数解析和设置 NDEF 记录有效载荷的内容。

成员类型文档

enum QNdefRecord::TypeNameFormat

此枚举描述了 NDEF 记录的类型名格式。

常量描述
QNdefRecord::Empty0x00一个空的 NDEF 记录,该记录不包含有效载荷
QNdefRecord::NfcRtd0x01NDEF 记录类型由 NFC RTD 规范定义
QNdefRecord::Mime0x02NDEF 记录类型遵循 RFC 2046 中描述的结构
QNdefRecord::Uri0x03NDEF 记录类型遵循 RFC 3986 中描述的结构
QNdefRecord::ExternalRtd0x04NDEF 记录类型遵循 NFC RTD 规范中描述的外部类型名的结构
QNdefRecord::Unknown0x05记录的类型是未知的,应该像处理没有进一步上下文的 MIME 类型 'application/octet-stream' 的内容一样处理

成员函数文档

QNdefRecord::QNdefRecord()

构造一个新的空 NDEF 记录。

QNdefRecord::QNdefRecord(const QNdefRecord &other)

构造一个新 NDEF 记录,它是 other 的副本。

[noexcept] QNdefRecord::~QNdefRecord()

销毁 NDEF 记录。

[since 6.2] void QNdefRecord::clear()

清除 NDEF 记录。

调用 isEmpty() 返回 true 表示已清除的记录。记录 type() 设置为 Empty

此函数是在 Qt 6.2 中引入的。

QByteArray QNdefRecord::id() const

返回 NDEF 记录的 ID。

另请参阅setId().

bool QNdefRecord::isEmpty() const

如果 NDEF 记录包含空的载荷,则返回 true;否则返回 false

这相当于调用 payload().isEmpty()

模板 <typename T> bool QNdefRecord::isRecordType() const

如果NDEF记录是指定的记录类型,则返回 true;否则返回 false

QByteArray QNdefRecord::payload() const

返回NDEF记录的有效负载。

另请参阅 setPayload()。

void QNdefRecord::setId(const QByteArray &id)

将NDEF记录的id设置为 id

另请参阅 id()。

void QNdefRecord::setPayload(const QByteArray &payload)

将NDEF记录的有效负载设置为 payload

另请参阅 payload()。

void QNdefRecord::setType(const QByteArray &type)

将NDEF记录的类型设置为 type

另请参阅 type()。

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

将NDEF记录的类型名称格式设置为 typeNameFormat

另请参阅 typeNameFormat()。

QByteArray QNdefRecord::type() const

返回NDEF记录的类型。

另请参阅 setType()。

QNdefRecord::TypeNameFormat QNdefRecord::typeNameFormat() const

返回NDEF记录的类型名称格式。

另请参阅 setTypeNameFormat()。

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

如果此NDEF记录不等于 other,则返回 true;否则返回 false

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

将此NDEF记录分配给 other

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

如果 other 和此NDEF记录相同,则返回 true。否则返回 false

宏文档

Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(className, typeNameFormat, type)

此宏声明了 QNdefRecord::isRecordType() 函数的模板专用化。

应在此专用化NDEF记录类的定义之后直接在头文件中使用此宏。

className 是专用类的名称,typeNameFormat 是自定义类型合适的 QNdefRecord::TypeNameFormattype 是没有NID或NSS前缀的类型。即 example.com:f 而不是 urn:nfc:ext:example.com:f

请参阅关于创建专门的 NDEF 记录类的部分以获取详细信息。

还请参阅 Q_DECLARE_NDEF_RECORD

Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)

此宏为专门的 NDEF 记录类声明了默认和拷贝构造函数。

className 是专门类的名称,typeNameFormat 是自定义类型的适当 QNdefRecord::TypeNameFormattype 是不带 NID 或 NSS 前缀的类型。例如 example.com:f 而不是 urn:nfc:ext:example.com:finitialPayload 是空记录的初始负载,它必须是一个 QByteArray 或可以隐式转换为 QByteArray 的类型。

请参阅关于创建专门的 NDEF 记录类的部分以获取详细信息。

还请参阅 Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD

© 2024 The Qt Company Ltd. 包含在此处的文档贡献的版权属于各自的版权所有者。本提供的文档是根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款许可的。Qt 及其相应的标志是 The Qt Company Ltd. 在芬兰和/或世界其他国家的商标。所有其他商标均为其各自所有者的财产。