QNearFieldTarget Class
QNearFieldTarget 类提供了一个用于与目标设备通信的接口。更多内容...
| 头文件: | #include <QNearFieldTarget> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Nfc) target_link_libraries(mytarget PRIVATE Qt6::Nfc) |
| qmake: | QT += nfc |
| 继承自: | QObject |
公共类型
| class | RequestId |
| enum | AccessMethod { UnknownAccess, NdefAccess, TagTypeSpecificAccess, AnyAccess } |
| flags | AccessMethods |
| enum | Error { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, NoResponseError, …, UnsupportedTargetError } |
| enum | Type { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, …, MifareTag } |
公共函数
| QNearFieldTarget(QObject *parent = nullptr) | |
| virtual | ~QNearFieldTarget() |
| QNearFieldTarget::AccessMethods | accessMethods() const |
| bool | disconnect() |
| bool | hasNdefMessage() |
| int | maxCommandLength() const |
| QNearFieldTarget::RequestId | readNdefMessages() |
| QVariant | requestResponse(const QNearFieldTarget::RequestId &id) const |
| QNearFieldTarget::RequestId | sendCommand(const QByteArray &command) |
| QNearFieldTarget::Type | type() const |
| QByteArray | uid() const |
| bool | waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000) |
| QNearFieldTarget::RequestId | writeNdefMessages(const QList<QNdefMessage> &messages) |
信号
| void | disconnected() |
| void | error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id) |
| void | ndefMessageRead(const QNdefMessage &message) |
| void | requestCompleted(const QNearFieldTarget::RequestId &id) |
详细说明
QNearFieldTarget 提供了一个用于与 NFC 目标设备通信的通用接口。该类同时支持 NFC Forum 设备和 NFC Forum 标签目标。所有目标特定类都是该类的子类。
可使用type()函数获取目标设备的类型。uid()函数返回目标设备的唯一标识符。可通过测试accessMethods()函数返回的AccessMethods 标志,来确定目标设备支持哪些访问方法。
如果目标设备支持NdefAccess ,则可调用hasNdefMessage() 测试目标设备是否存储了 NDEF 消息;同时,可使用readNdefMessages() 和writeNdefMessages() 函数分别获取和设置 NDEF 消息。
如果目标设备支持TagTypeSpecificAccess ,则可使用sendCommand() 向目标设备发送单个专有命令并获取响应。
成员类型文档
enum QNearFieldTarget::AccessMethod
flags QNearFieldTarget::AccessMethods
该枚举描述了近场目标支持的访问方式。
| 常量 | 值 | 描述 |
|---|---|---|
QNearFieldTarget::UnknownAccess | 0x00 | 目标支持一种未知的访问类型。 |
QNearFieldTarget::NdefAccess | 0x01 | 目标支持使用readNdefMessages() 和writeNdefMessages() 读写 NDEF 消息。 |
QNearFieldTarget::TagTypeSpecificAccess | 0x02 | 目标支持使用sendCommand() 发送标签类型特定命令。 |
QNearFieldTarget::AnyAccess | 0xff | 目标支持任何已知的访问类型。 |
AccessMethods 类型是QFlags<AccessMethod> 的 typedef。它存储 AccessMethod 值的按“或”运算组合。
enum QNearFieldTarget::Error
此枚举描述了近场目标报告的错误代码。
| 常量 | 值 | 描述 |
|---|---|---|
QNearFieldTarget::NoError | 0 | 未发生错误。 |
QNearFieldTarget::UnknownError | 1 | 发生了一个未识别的错误。 |
QNearFieldTarget::UnsupportedError | 2 | 该近场目标不支持所请求的操作。 |
QNearFieldTarget::TargetOutOfRangeError | 3 | 目标已超出范围。 |
QNearFieldTarget::NoResponseError | 4 | 目标未响应。 |
QNearFieldTarget::ChecksumMismatchError | 5 | 校验和检测到响应已损坏。 |
QNearFieldTarget::InvalidParametersError | 6 | 向特定标签类型的函数传递了无效参数。 |
QNearFieldTarget::ConnectionError | 7 | 无法连接到目标。 |
QNearFieldTarget::NdefReadError | 8 | 无法从目标读取 NDEF 消息。 |
QNearFieldTarget::NdefWriteError | 9 | 无法将 NDEF 消息写入目标。 |
QNearFieldTarget::CommandError | 10 | 无法向目标发送命令。 |
QNearFieldTarget::TimeoutError | 11 | 无法在waitForRequestCompleted()中指定的时间内完成该请求。 |
QNearFieldTarget::UnsupportedTargetError | 12 | 所使用的目标不受支持。例如,这可能发生在客户端应用缺少必要的权限和/或隐私设置时。 |
enum QNearFieldTarget::Type
此枚举描述了目标被检测出的标签类型。
| 常量 | 值 | 描述 |
|---|---|---|
QNearFieldTarget::ProprietaryTag | 0 | 一个未识别的专有目标标签。 |
QNearFieldTarget::NfcTagType1 | 1 | 一个 NFC 标签类型 1 目标。 |
QNearFieldTarget::NfcTagType2 | 2 | 一个 NFC 标签类型 2 目标。 |
QNearFieldTarget::NfcTagType3 | 3 | NFC 标签类型 3 目标。 |
QNearFieldTarget::NfcTagType4 | 4 | NFC 标签类型 4 目标。如果无法通过下文中的 NfcTagType4A 或 NfcTagType4B 进一步细化 NfcTagType4,则使用此值。 |
QNearFieldTarget::NfcTagType4A | 5 | 基于 ISO/IEC 14443-3A 的 NFC 标签类型 4 目标。 |
QNearFieldTarget::NfcTagType4B | 6 | 基于 ISO/IEC 14443-3B 的 NFC 标签类型 4 目标。 |
QNearFieldTarget::MifareTag | 7 | 一个 Mifare 目标。 |
成员函数文档
[explicit] QNearFieldTarget::QNearFieldTarget(QObject *parent = nullptr)
使用parent 构建一个新的近场目标。
[virtual noexcept] QNearFieldTarget::~QNearFieldTarget()
摧毁近场目标。
QNearFieldTarget::AccessMethods QNearFieldTarget::accessMethods() const
返回该近场目标支持的访问方法。
bool QNearFieldTarget::disconnect()
关闭与目标设备的连接,以便从另一个实例与目标设备进行通信。当QNearFieldTarget 被销毁时,该连接也会被关闭。处理命令或读写NDEF消息时,会(重新)建立与目标设备的连接。
仅当现有连接已成功关闭时才返回true ;否则返回false 。
[signal] void QNearFieldTarget::disconnected()
当近场目标移出感应范围时,会发出此信号。
[signal] void QNearFieldTarget::error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id)
当处理请求id 时发生错误,将发出此信号。error 参数描述了该错误。
bool QNearFieldTarget::hasNdefMessage()
如果近场目标上存储了至少一条 NDEF 消息,则返回true ;否则返回false 。
int QNearFieldTarget::maxCommandLength() const
返回可通过 `sendCommand` 发送的最大字节数。如果目标不支持发送特定标签类型的命令,则返回 0。
另请参阅 sendCommand()。
[signal] void QNearFieldTarget::ndefMessageRead(const QNdefMessage &message)
当从目标设备读取完整的NDEFmessage 时,会发出此信号。
另请参阅 readNdefMessages()。
QNearFieldTarget::RequestId QNearFieldTarget::readNdefMessages()
开始读取存储在近场目标上的 NDEF 消息。返回一个请求 ID,可用于跟踪请求的完成状态。如果目标不支持读取 NDEF 消息,则会返回一个无效的请求 ID。
对于每条 NDEF 消息,都会触发一个 `ndefMessageRead()` 信号。当所有 NDEF 消息均已读取完毕时,将触发 `requestCompleted()` 信号。若发生错误,则触发 `error()` 信号。
注意:若尝试 从处于NFC Forum定义的INITIALIZED状态的标签中读取NDEF消息,将因NdefReadError 而失败,因为该标签虽已格式化为支持NDEF,但尚未包含任何消息。
[signal] void QNearFieldTarget::requestCompleted(const QNearFieldTarget::RequestId &id)
当请求id 完成时,会触发此信号。
另请参阅 sendCommand()。
QVariant QNearFieldTarget::requestResponse(const QNearFieldTarget::RequestId &id) const
返回请求id 的解码响应。如果该请求未知或尚未完成,则返回无效的QVariant 。
QNearFieldTarget::RequestId QNearFieldTarget::sendCommand(const QByteArray &command)
向近场目标发送command 。返回一个请求ID,可用于跟踪该请求的完成状态。如果目标不支持发送特定标签类型的命令,则会返回一个无效的请求ID。
若请求成功完成,将触发requestCompleted() 信号;否则将触发error() 信号。
请求成功完成后,可从requestResponse() 函数中获取响应。该请求的响应将为QByteArray 。
另请参阅 requestCompleted() 和waitForRequestCompleted()。
QNearFieldTarget::Type QNearFieldTarget::type() const
返回此近场目标的标签类型。
QByteArray QNearFieldTarget::uid() const
返回近场目标的 UID。
注意:在 iOS系统上 ,对于通过 `NdefAccess ` 方法发现的近场目标,此函数将返回一个空的 `QByteArray ` 对象。
另请参阅 QNearFieldTarget::AccessMethod 。
bool QNearFieldTarget::waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000)
等待最多msecs 毫秒,直至请求id 完成。如果请求成功完成且触发了 requestCompleted() 信号,则返回true ;否则返回false 。
QNearFieldTarget::RequestId QNearFieldTarget::writeNdefMessages(const QList<QNdefMessage> &messages)
将messages 中的NDEF消息写入目标设备。返回一个请求ID,可用于跟踪请求的完成状态。如果目标设备不支持写入NDEF消息,则会返回一个无效的请求ID。
当写入操作成功完成时,将触发requestCompleted()信号;否则将触发error()信号。
© 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.