Auf dieser Seite

QNearFieldManager Class

Die Klasse „QNearFieldManager“ ermöglicht den Zugriff auf Benachrichtigungen zu NFC-Ereignissen. Mehr...

Header: #include <QNearFieldManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake: QT += nfc
Erbt von: QObject

Öffentliche Typen

enum class AdapterState { Offline, TurningOn, Online, TurningOff }

Öffentliche Funktionen

QNearFieldManager(QObject *parent = nullptr)
virtual ~QNearFieldManager()
(since 6.2) bool isEnabled() const
bool isSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const
(since 6.2) void setUserInformation(const QString &message)
bool startTargetDetection(QNearFieldTarget::AccessMethod accessMethod)
void stopTargetDetection(const QString &errorMessage = QString())

Signale

void adapterStateChanged(QNearFieldManager::AdapterState state)
void targetDetected(QNearFieldTarget *target)
(since 6.2) void targetDetectionStopped()
void targetLost(QNearFieldTarget *target)

Ausführliche Beschreibung

NFC-Forum-Geräte unterstützen zwei Kommunikationsmodi. Der erste Modus, die Peer-to-Peer-Kommunikation, dient der Kommunikation zwischen zwei NFC-Forum-Geräten. Der zweite Modus, die Master/Slave-Kommunikation, dient der Kommunikation zwischen einem NFC-Forum-Gerät und einem NFC-Forum-Tag oder einer kontaktlosen Karte. Das Signal „ targetDetected()“ wird ausgegeben, wenn ein Zielgerät in den Kommunikationsbereich eintritt. Die Kommunikation kann über den an dieses Signal angeschlossenen Steckplatz initiiert werden.

NFC-Forum-Geräte fungieren bei der Master/Slave-Kommunikation in der Regel als Master. Einige Geräte können auch als Slave betrieben werden, im sogenannten Kartenemulationsmodus. In diesem Modus emuliert das lokale NFC-Gerät ein NFC-Forum-Tag oder eine kontaktlose Karte.

Anwendungen können eine Verbindung zu den Signalen „ targetDetected “ () und „ targetLost “ () herstellen, um benachrichtigt zu werden, wenn ein NFC-Forum-Tag in die Reichweite kommt oder diese verlässt. Bevor diese Signale ausgegeben werden, muss die Zielerkennung mit der Funktion „ startTargetDetection “ () gestartet werden. Die Zielerkennung kann mit der Funktion „ stopTargetDetection()“ beendet werden. Wenn das Ziel nicht mehr benötigt wird, sollte es gelöscht werden, da anderen Anwendungen sonst der Zugriff auf das Ziel verwehrt werden könnte.

NFC unter Linux

Das Linux-NFC-Projekt stellt Software zur Unterstützung von NFC auf Linux-Plattformen bereit. Der neard-Daemon ermöglicht den Zugriff auf die unterstützte Hardware über DBus-Schnittstellen. „ QtNfc “ erfordert die neard-Version 0.14, die aus dem Quellcode kompiliert oder über den entsprechenden Linux-Paketmanager installiert werden kann. Derzeit werden noch nicht alle API-Funktionen unterstützt. Damit „ QtNfc “ auf die DBus-Schnittstellen zugreifen kann, muss der „neard“-Daemon laufen. Bei Problemen kann die Debug-Ausgabe aktiviert werden, indem die kategorisierte Protokollierung für „qt.nfc.neard“ aktiviert wird.

Dokumentation zu Mitgliedstypen

enum class QNearFieldManager::AdapterState

Diese Aufzählung beschreibt die verschiedenen Zustände, die ein NFC-Adapter annehmen kann.

KonstanteWertBeschreibung
QNearFieldManager::AdapterState::Offline1Der NFC-Adapter ist offline.
QNearFieldManager::AdapterState::TurningOn2Der NFC-Adapter wird eingeschaltet.
QNearFieldManager::AdapterState::Online3Der NFC-Adapter ist online.
QNearFieldManager::AdapterState::TurningOff4Der NFC-Adapter wird ausgeschaltet.

Dokumentation der Member-Funktionen

[explicit] QNearFieldManager::QNearFieldManager(QObject *parent = nullptr)

Erstellt einen neuen Nahfeld-Manager mit der Option „ parent “.

[virtual noexcept] QNearFieldManager::~QNearFieldManager()

Zerstört den Nahfeld-Manager.

[signal] void QNearFieldManager::adapterStateChanged(QNearFieldManager::AdapterState state)

Dieses Signal wird immer dann ausgegeben, wenn sich die „ state “ des NFC-Adapters geändert hat.

Hinweis: Derzeit wird dieses Signal nur unter Android ausgegeben.

[since 6.2] bool QNearFieldManager::isEnabled() const

Gibt „ true “ zurück, wenn das Gerät über einen NFC-Adapter verfügt und dieser eingeschaltet ist; andernfalls wird „ false “ zurückgegeben.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch isSupported().

bool QNearFieldManager::isSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const

Gibt „ true “ zurück, wenn das zugrunde liegende Gerät über einen NFC-Adapter verfügt; andernfalls wird „ false “ zurückgegeben. Wenn ein „ accessMethod “ angegeben wird, gibt die Funktion „ true “ nur dann zurück, wenn der NFC-Adapter den angegebenen „ accessMethod “ unterstützt.

Siehe auch isEnabled().

[since 6.2] void QNearFieldManager::setUserInformation(const QString &message)

Legt die Meldung fest, die das System dem Benutzer anzeigt. Wenn die Zielerkennung läuft, wird die Variable „ message “ sofort aktualisiert und kann als Fortschrittsmeldung verwendet werden. Die letzte Meldung, die vor einem Aufruf von ` startTargetDetection()` ohne Fehlermeldung festgelegt wurde, wird als Erfolgsmeldung verwendet. Wenn die Zielerkennung nicht läuft, wird ` message ` als Anfangsmeldung verwendet, sobald die nächste Erkennung gestartet wird. Standardmäßig wird dem Benutzer keine Meldung angezeigt.

Hinweis: Derzeit wirkt sich diese Funktion nur auf iOS aus, da das System während des Scans ein Popup anzeigt. Unter iOS wird diese „ message “ der Warnmeldung zugeordnet, die nach erfolgreichem Abschluss des Scans angezeigt wird. Andere Plattformen ignorieren „ message “.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch ` startTargetDetection()` und ` stopTargetDetection()`.

bool QNearFieldManager::startTargetDetection(QNearFieldTarget::AccessMethod accessMethod)

Beginnt mit der Zielerkennung und gibt „ true “ zurück, wenn die Zielerkennung erfolgreich gestartet wurde; andernfalls wird „ false “ zurückgegeben. Löst das Signal „ targetDetected()“ aus, sobald sich ein Ziel in der Nähe befindet. Es werden nur Tags mit dem angegebenen „ accessMethod “ gemeldet. Die Zielerkennung läuft so lange weiter, bis „ stopTargetDetection()“ aufgerufen wird.

Um Ziele mit einem anderen „ accessMethod “ zu erkennen, muss zunächst „ stopTargetDetection()“ aufgerufen werden.

Hinweis: Unter iOS ist es nicht möglich, die Zielerkennung für NdefAccess und TagTypeSpecificAccess gleichzeitig zu starten. Wenn also „AnyAccess“ ausgewählt ist, wird stattdessen NdefAccess verwendet.

Hinweis: Auf Plattformen, die neard verwenden, wird die Zielerkennung beendet, sobald ein Tag erkannt wurde.

Siehe auch stopTargetDetection().

void QNearFieldManager::stopTargetDetection(const QString &errorMessage = QString())

Beendet die Erkennung von Zielen. Das Signal „ targetDetected()“ wird erst wieder ausgesendet, wenn ein weiterer Aufruf von „ startTargetDetection()“ erfolgt. Zuvor erkannte Ziele bleiben weiterhin gültig.

Hinweis: Unter iOS werden erkannte Ziele nach diesem Aufruf ungültig (z. B. führt der Versuch, NDEF-Nachrichten zu schreiben oder zu lesen, zu einem Fehler).

Wird ein ` errorMessage ` übergeben, ist dies ein Hinweis an das System, dass das Ziel der Anwendung nicht erreicht wurde. Dem Benutzer werden die Meldung „ errorMessage “ und ein entsprechendes Fehlersymbol angezeigt. Der Aufruf dieser Funktion mit einem leeren ` errorMessage ` impliziert einen erfolgreichen Abschluss des Vorgangs; andernfalls sollte ein ` errorMessage ` an diese Funktion übergeben werden.

Hinweis: Derzeit wirkt sich „ errorMessage “ nur unter iOS aus, da das System während des Scans ein Popup anzeigt, in dem „ errorMessage “ sichtbar ist. Andere Plattformen ignorieren diesen Parameter.

Siehe auch setUserInformation().

[signal] void QNearFieldManager::targetDetected(QNearFieldTarget *target)

Dieses Signal wird immer dann ausgegeben, wenn ein Ziel erkannt wird. Der Parameter „ target “ steht für das erkannte Ziel.

Dieses Signal wird für alle erkannten Ziele ausgelöst.

QNearFieldManager behält die Eigentumsrechte an „ target “ bei; es wird jedoch erst zerstört, wenn der Destruktor „ QNearFieldManager “ aufgerufen wird. Die Eigentumsrechte können durch Aufruf von „ setParent()“ übertragen werden.

Löschen Sie „ target “ nicht aus dem mit diesem Signal verbundenen Slot, sondern rufen Sie stattdessen „ deleteLater()“ auf.

Hinweis: Wenn „ target “ gelöscht wird, bevor es den Erfassungsbereich verlässt, wird das Signal „ targetLost()“ nicht ausgelöst.

Siehe auch „ targetLost()“.

[signal, since 6.2] void QNearFieldManager::targetDetectionStopped()

Dieses Signal wird immer dann ausgelöst, wenn die Zielerkennung beendet wird.

Hinweis: Meistens wird dieses Signal ausgelöst, wenn „ stopTargetDetection()“ aufgerufen wurde. Zudem kann der Benutzer die Erkennung unter iOS über ein vom System während des Scans angezeigtes Popup-Fenster beenden, was ebenfalls zur Auslösung dieses Signals führt.

Diese Funktion wurde in Qt 6.2 eingeführt.

[signal] void QNearFieldManager::targetLost(QNearFieldTarget *target)

Dieses Signal wird immer dann ausgesendet, wenn sich ein Ziel aus der Nähe entfernt. Der Parameter „ target “ steht für das verlorene Ziel.

Löschen Sie „ target “ nicht aus dem mit diesem Signal verbundenen Slot, sondern verwenden Sie stattdessen „ deleteLater()“.

Siehe auch „ QNearFieldTarget::disconnected“ ().

© 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.