Класс QNdefRecord
Класс QNdefRecord предоставляет запись NFC NDEF. Подробнее...
| Заголовок: | #include <QNdefRecord> |
| qmake: | QT += nfc |
| С момента: | Qt 5.2 |
| Наследуется от: | QNdefNfcSmartPosterRecord, QNdefNfcTextRecord и QNdefNfcUriRecord |
Открытые типы
| перечисление | TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown } |
Открытые функции
| QNdefRecord() | |
| QNdefRecord(const QNdefRecord &other) | |
| ~QNdefRecord() | |
| 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(TypeNameFormat typeNameFormat) |
| QByteArray | type() const |
| 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 предоставляет запись NFC NDEF.
QNdefRecord и производные классы используются для разбора содержимого сообщений NDEF и создания новых сообщений NDEF.
Используйте typeNameFormat() и setTypeNameFormat(), чтобы получить и установить формат имени типа записи NDEF.
Используйте type() и setType(), чтобы получить и установить тип записи NDEF.
Используйте id() и setId(), чтобы получить и установить идентификатор записи NDEF.
Используйте payload() и setPayload(), чтобы получить и установить полезную нагрузку записи NDEF. isEmpty() можно использовать для проверки, пуста ли полезная нагрузка.
QNdefRecord — класс с неявной совместной собственностью. Это означает, что вы можете эффективно преобразовывать между QNdefRecord и специализированными классами записей. Шаблонная функция isRecordType() может использоваться для проверки возможности преобразования. Следующий пример демонстрирует, как проверить, является ли QNdefRecord записью NFC RTD Text и извлечь текстовую информацию из неё.
if (record.isRecordType<QNdefNfcTextRecord>()) {
QNdefNfcTextRecord textRecord(record);
qDebug() << textRecord.text();
} Создание специализированных классов записей NDEF
Специализированные классы записей NDEF можно легко создать с помощью макросов Q_DECLARE_NDEF_RECORD() и Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD(). Следующий пример демонстрирует объявление класса гипотетического типа записи 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.
Документация по типам членов
перечисление 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.
QNdefRecord::~QNdefRecord()
Уничтожает запись NDEF.
QByteArray QNdefRecord::id() const
Возвращает идентификатор записи NDEF.
См. также setId().
bool QNdefRecord::isEmpty() const
Возвращает true, если запись NDEF содержит пустую полезную нагрузку; в противном случае возвращает false.
Это эквивалентно вызову payload().isEmpty().
bool QNdefRecord::isRecordType() const
Возвращает true, если запись NDEF является записи указанного типа; в противном случае возвращает false.
QByteArray QNdefRecord::payload() const
Возвращает полезную нагрузку записи NDEF.
См. также setPayload().
void QNdefRecord::setId(const QByteArray &id)
Устанавливает идентификатор записи NDEF в id.
См. также id().
void QNdefRecord::setPayload(const QByteArray &payload)
Устанавливает полезную нагрузку записи NDEF в payload.
См. также payload().
void QNdefRecord::setType(const QByteArray &type)
Устанавливает тип записи NDEF в type.
См. также type().
void QNdefRecord::setTypeNameFormat(TypeNameFormat typeNameFormat)
Устанавливает формат имени типа записи NDEF в typeNameFormat.
См. также typeNameFormat().
QByteArray QNdefRecord::type() const
Возвращает тип записи NDEF.
См. также setType().
TypeNameFormat QNdefRecord::typeNameFormat() const
Возвращает формат имени типа записи NDEF.
См. также setTypeNameFormat().
bool QNdefRecord::operator!=(const QNdefRecord &other) const
Возвращает true, если эта запись NDEF не равна other; в противном случае возвращает false.
QNdefRecord &QNdefRecord::operator=(const QNdefRecord &other)
Присваивает этой записи NDEF значение other.
bool QNdefRecord::operator==(const QNdefRecord &other) const
Возвращает true, если other и эта запись NDEF идентичны.
Документация макросов
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.
См. также Q_DECLARE_ISRECORDTYPE_FOR_NDEF_RECORD().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qndefrecord.html