Пример QML для сообщений формата обмена данными NFC (NDEF).
Пример доски объявлений QML демонстрирует содержимое сообщения NDEF, считанного из тега NFC. Каждое вновь обнаруженное сообщение NDEF добавляется на пробковую доску, и его можно перетащить в любое место доски. Пробковые доски представляют собой личное и рабочее пространство. Рабочие области можно менять, проводя пальцем влево или вправо.
demo.gif
В примере доски объявлений NFC мы используем следующий файл .qml:
corkboards.qml
Mode.qml
main.cpp содержит логику приложения для загрузки основного представления, хранящегося в файле corkboards.qml.
int main(int argc, char *argv[])
{
QGuiApplication application(argc, argv);
QQuickView view;
view.setSource(QUrl("qrc:/corkboards.qml"));
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.show();
return application.exec();
}
В этом файле есть два основных компонента QML:
Когда экземпляр типа NearField QML создается впервые, обработчик Component.onCompleted запускает процесс опроса NFC. Обработчик onMessageRecordsChanged анализирует сообщение NFC, обнаруженное компонентом NearField, и моделирует данные, передаваемые в ListView. Кроме того, каждый раз, когда менеджер NearField останавливает процесс опроса, обработчик onPollingChanged перезапускает его.
NearField {
property bool requiresManualPolling: false
orderMatch: false
onMessageRecordsChanged: {
...
onPollingChanged: {
...
Component.onCompleted: {
...
}
ListViewКомпонент будетListModelкак параметр(отNFCЗапись сборки)。Представление для каждого элемента модели представленоModeОпределение компонента(Подробности его реализации можно найти вMode.qmlнайден в файле)。Модель данных состоит из списка пробковых досок.。Каждая пробковая доска может отображать несколько записей текстовых сообщений NFC.。
ListView {
id: listView
...
model: list
...
delegate: Mode {}
}
Названия пробковых досок для каждого проекта:
Text {
anchors { horizontalCenter: parent.horizontalCenter; top: parent.top; topMargin: 10}
text: name;
font { pixelSize: 30; bold: true }
Каждая текстовая запись, прочитанная из сообщения NFC, представлена в виде заметки и имеет свое собственное местоположение на дисплее. Изначально локации задаются случайным образом. Текст заметки задается в TextField.
Repeater {
model: notes
Item {
id: stickyPage
x: ListView.width * (0.7 * Math.random() + 0.1)
y: ListView.height * (0.7 * Math.random() + 0.1)
...
Item {
id: sticky
...
TextEdit {
id: myText
text: noteText
...
}
...
C:\Qt\{ваша версия Qt}\Examples\{ваша версия Qt}\nfc
https://doc.qt.io/qt-5/qtnfc-corkboard-example.html