QNdefRecord Class
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 |
공개 유형
| enum | 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 messages 의 내용을 파싱하고 새로운 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 레코드 클래스를 쉽게 생성할 수 있습니다. 다음 예제는 단일 int 속성 foo를 캡슐화하는 가상의 example.com:f 레코드 유형의 클래스 선언을 보여줍니다.
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")개발자는 NDEF 레코드의 페이로드 내용을 파싱하고 설정하는 foo() 및 setFoo() 함수에 대한 구현만 제공하면 됩니다.
멤버 유형 문서
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)
other 의 복사본인 새로운 NDEF 레코드를 생성합니다.
[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() 를 호출하는 것과 동일합니다.
template <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 접두사가 없는 유형입니다. 즉, urn:nfc:ext:example.com:f가 아니라 example.com:f입니다.
자세한 내용은 Creating specialized NDEF record classes 섹션을 참조하십시오.
Q_DECLARE_NDEF_RECORD()항목도 참조하십시오 .
Q_DECLARE_NDEF_RECORD(className, typeNameFormat, type, initialPayload)
이 매크로는 특화된 NDEF 레코드 클래스에 대한 기본 생성자와 복사 생성자를 선언합니다.
className 는 특수화된 클래스의 이름이며, typeNameFormat 는 사용자 정의 유형에 해당하는 적절한 QNdefRecord::TypeNameFormat 이고, type 는 NID 또는 NSS 접두사가 없는 유형입니다. 즉, urn:nfc:ext:example.com:f가 아니라 example.com:f입니다. initialPayload 는 빈 레코드의 초기 페이로드이며, QByteArray 이거나 QByteArray 로 암시적으로 변환될 수 있는 유형이어야 합니다.
자세한 내용은 Creating specialized NDEF record classes 섹션을 참조하십시오.
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.