QNdefRecord 类
QNdefRecord 类提供了一个 NFC NDEF 记录。更多信息...
头文件 | #include <QNdefRecord> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Nfc) target_link_libraries(mytarget PRIVATE Qt6::Nfc) |
qmake | QT += nfc |
继承自 | QNdefNfcIconRecord、QNdefNfcSmartPosterRecord、QNdefNfcTextRecord 和 QNdefNfcUriRecord |
公共类型
枚举 | TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown } |
公共函数
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 |
宏
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::Empty | 0x00 | 一个空的 NDEF 记录,该记录不包含有效载荷 |
QNdefRecord::NfcRtd | 0x01 | NDEF 记录类型由 NFC RTD 规范定义 |
QNdefRecord::Mime | 0x02 | NDEF 记录类型遵循 RFC 2046 中描述的结构 |
QNdefRecord::Uri | 0x03 | NDEF 记录类型遵循 RFC 3986 中描述的结构 |
QNdefRecord::ExternalRtd | 0x04 | NDEF 记录类型遵循 NFC RTD 规范中描述的外部类型名的结构 |
QNdefRecord::Unknown | 0x05 | 记录的类型是未知的,应该像处理没有进一步上下文的 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::TypeNameFormat,type 是没有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::TypeNameFormat,type 是不带 NID 或 NSS 前缀的类型。例如 example.com:f 而不是 urn:nfc:ext:example.com:f。 initialPayload 是空记录的初始负载,它必须是一个 QByteArray 或可以隐式转换为 QByteArray 的类型。
请参阅关于创建专门的 NDEF 记录类的部分以获取详细信息。
© 2024 The Qt Company Ltd. 包含在此处的文档贡献的版权属于各自的版权所有者。本提供的文档是根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款许可的。Qt 及其相应的标志是 The Qt Company Ltd. 在芬兰和/或世界其他国家的商标。所有其他商标均为其各自所有者的财产。