QGeoPositionInfoSource Class

Die Klasse QGeoPositionInfoSource ist eine abstrakte Basisklasse für die Verteilung von Positionsdaten. Mehr...

Kopfzeile: #include <QGeoPositionInfoSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
Vererbt: QObject
Vererbt von:

QNmeaPositionInfoSource

Öffentliche Typen

enum Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError }
enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods }
flags PositioningMethods

Eigenschaften

Öffentliche Funktionen

QGeoPositionInfoSource(QObject *parent)
virtual ~QGeoPositionInfoSource()
(since Qt 5.14) virtual QVariant backendProperty(const QString &name) const
QBindable<QGeoPositionInfoSource::PositioningMethods> bindablePreferredPositioningMethods()
QBindable<int> bindableUpdateInterval()
virtual QGeoPositionInfoSource::Error error() const = 0
virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0
virtual int minimumUpdateInterval() const = 0
QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods() const
(since Qt 5.14) virtual bool setBackendProperty(const QString &name, const QVariant &value)
virtual void setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)
virtual void setUpdateInterval(int msec)
QString sourceName() const
virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const = 0
int updateInterval() const

Öffentliche Slots

virtual void requestUpdate(int timeout = 0) = 0
virtual void startUpdates() = 0
virtual void stopUpdates() = 0

Signale

void errorOccurred(QGeoPositionInfoSource::Error positioningError)
void positionUpdated(const QGeoPositionInfo &update)
(since Qt 5.12) void supportedPositioningMethodsChanged()

Statische öffentliche Mitglieder

QStringList availableSources()
QGeoPositionInfoSource *createDefaultSource(QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createDefaultSource(const QVariantMap &parameters, QObject *parent)
QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

Ausführliche Beschreibung

Die statische Funktion QGeoPositionInfoSource::createDefaultSource() erzeugt eine Standard-Positionsquelle, die für die Plattform geeignet ist, falls eine solche vorhanden ist. Andernfalls sucht QGeoPositionInfoSource nach verfügbaren Plugins, die die Schnittstelle QGeoPositionInfoSourceFactory implementieren.

Benutzer einer QGeoPositionInfoSource Unterklasse können die aktuelle Position mit requestUpdate() abfragen, oder regelmäßige Positionsaktualisierungen mit startUpdates() und stopUpdates() starten und stoppen. Wenn eine Aktualisierung verfügbar ist, wird positionUpdated() ausgegeben. Die letzte bekannte Position kann mit lastKnownPosition() abgerufen werden.

Wenn regelmäßige Positionsaktualisierungen erforderlich sind, kann mit setUpdateInterval() angegeben werden, wie oft diese Aktualisierungen gesendet werden sollen. Wenn kein Intervall angegeben wird, werden Aktualisierungen einfach immer dann bereitgestellt, wenn sie verfügbar sind. Ein Beispiel:

// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
    source->setUpdateInterval(10000);

Um ein zuvor festgelegtes Aktualisierungsintervall zu entfernen, rufen Sie setUpdateInterval() mit einem Wert von 0 auf.

Hinweis: Die Positionsquelle kann einen Mindestwert für die Aktualisierungsintervalle vorschreiben, der von minimumUpdateInterval() zurückgegeben wird.

Hinweis: Um diese Klasse vom Android-Dienst aus zu verwenden, siehe Qt Positioning auf Android.

Dokumentation der Mitgliedstypen

enum QGeoPositionInfoSource::Error

Die Aufzählung Error stellt die Fehler dar, die auftreten können.

KonstanteWertBeschreibung
QGeoPositionInfoSource::AccessError0Der Verbindungsaufbau zum entfernten Ortungs-Backend ist fehlgeschlagen, weil die Anwendung nicht über die erforderlichen Berechtigungen verfügte.
QGeoPositionInfoSource::ClosedError1Das entfernte Positionierungs-Backend hat die Verbindung geschlossen, was zum Beispiel passiert, wenn der Benutzer die Ortungsdienste ausschaltet. Sobald der Ortungsdienst wieder aktiviert ist, werden die regelmäßigen Aktualisierungen wieder aufgenommen.
QGeoPositionInfoSource::NoError3Es ist kein Fehler aufgetreten.
QGeoPositionInfoSource::UnknownSourceError2Ein nicht identifizierter Fehler ist aufgetreten.
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2)4Wenn requestUpdate() aufgerufen wurde, zeigt dieser Fehler an, dass die aktuelle Position nicht innerhalb der angegebenen Zeitspanne abgerufen werden konnte. Wenn startUpdates() aufgerufen wurde, zeigt dieser Fehler an, dass die Unterklasse QGeoPositionInfoSource festgestellt hat, dass sie nicht in der Lage ist, weitere regelmäßige Aktualisierungen zu liefern. Im letzteren Fall würde der Fehler erst nach der Wiederaufnahme der regelmäßigen Aktualisierungen erneut ausgegeben werden.

enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods

Definiert die Typen der Positionierungsmethoden.

KonstanteWertBeschreibung
QGeoPositionInfoSource::NoPositioningMethods0x00000000Keine der Positionierungsmethoden.
QGeoPositionInfoSource::SatellitePositioningMethods0x000000ffSatellitengestützte Ortungsmethoden wie GPS oder GLONASS.
QGeoPositionInfoSource::NonSatellitePositioningMethods0xffffff00Andere Ortungsmethoden wie 3GPP-Zellenidentifizierung oder WiFi-basierte Ortung.
QGeoPositionInfoSource::AllPositioningMethods0xffffffffSatellitengestützte Ortungsmethoden, sobald verfügbar. Ansonsten nicht-satellitengestützte Methoden.

Der Typ PositioningMethods ist ein Typedef für QFlags<PositioningMethod>. Er speichert eine ODER-Kombination von PositioningMethod-Werten.

Dokumentation der Eigenschaft

[read-only] minimumUpdateInterval : const int

Diese Eigenschaft enthält die Mindestzeit (in Millisekunden), die zum Abrufen einer Positionsaktualisierung erforderlich ist.

Dies ist der Mindestwert, der von setUpdateInterval() und requestUpdate() akzeptiert wird.

Zugriffsfunktionen:

virtual int minimumUpdateInterval() const = 0

[bindable] preferredPositioningMethods : PositioningMethods

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Legt die bevorzugten Positionierungsmethoden für diese Quelle fest.

Wenn neue Methoden eine Methode enthalten, die von der Quelle nicht unterstützt wird, wird die nicht unterstützte Methode ignoriert.

Wenn neue Methoden keine einzige Methode enthalten, die von der Quelle verfügbar/unterstützt wird, werden die bevorzugten Methoden auf den Satz von Methoden gesetzt, die die Quelle zur Verfügung hat. Wenn die Quelle keine Methode zur Verfügung hat (z. B. weil ihr Ortungsdienst ausgeschaltet ist oder sie keinen Ortungsdienst anbietet), werden die übergebenen Methoden so akzeptiert, wie sie sind.

Der Standardwert für diese Eigenschaft ist NoPositioningMethods.

Hinweis: Implementierungen von Unterklassen müssen die Basisimplementierung von setPreferredPositioningMethods() aufrufen, um sicherzustellen, dass preferredPositioningMethods() den richtigen Wert zurückgibt.

Siehe auch supportedPositioningMethods().

[read-only] sourceName : const QString

Diese Eigenschaft enthält den eindeutigen Namen der verwendeten Implementierung der Positionsquelle.

Dies ist derselbe Name, der an createSource() übergeben werden kann, um eine neue Instanz einer bestimmten Positionsquellen-Implementierung zu erstellen.

Zugriffsfunktionen:

QString sourceName() const

[bindable] updateInterval : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält das gewünschte Intervall in Millisekunden zwischen den einzelnen Aktualisierungen.

Wenn das Aktualisierungsintervall nicht festgelegt ist (oder auf 0 gesetzt ist), stellt die Quelle Aktualisierungen so oft wie nötig bereit.

Wenn das Aktualisierungsintervall festgelegt ist, stellt die Quelle Aktualisierungen in einem Intervall bereit, das dem angeforderten Intervall so nahe wie möglich kommt. Wenn das angeforderte Intervall kleiner ist als minimumUpdateInterval(), wird stattdessen das Mindestintervall verwendet.

Änderungen am Aktualisierungsintervall werden so schnell wie möglich vorgenommen, die Dauer der Änderung kann jedoch von Implementierung zu Implementierung variieren. Ob die verstrichene Zeit des vorherigen Intervalls als Teil des neuen Intervalls gezählt wird oder nicht, hängt ebenfalls von der Implementierung ab.

Der Standardwert für diese Eigenschaft ist 0.

Hinweis: Implementierungen von Unterklassen müssen die Basisimplementierung von setUpdateInterval() aufrufen, damit updateInterval() den richtigen Wert zurückgibt.

Hinweis: Diese Eigenschaft kann nicht verwendet werden, um die Aktualisierungshäufigkeit unter iOS und macOS einzustellen, da deren APIs eine solche Möglichkeit nicht bieten. Auf diesen Systemen wird dieser Parameter nur verwendet, um UpdateTimeoutError zu setzen und ein errorOccurred Signal auszulösen, wenn die Aktualisierung nicht innerhalb des gewünschten Intervalls empfangen wird.

Dokumentation der Mitgliedsfunktionen

[explicit] QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)

Erzeugt eine Positionsquelle mit der angegebenen parent.

[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()

Zerstört die Positionsquelle.

[static] QStringList QGeoPositionInfoSource::availableSources()

Gibt eine Liste der verfügbaren Quell-Plugins zurück. Dazu gehören alle Standard-Backend-Plugins für die aktuelle Plattform.

[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const

Gibt den Wert der Backend-spezifischen Eigenschaft namens name zurück, falls vorhanden. Andernfalls ist der zurückgegebene Wert ungültig. Unterstützte Backend-spezifische Eigenschaften sind aufgelistet und beschrieben in Qt Positioning plugins#Default plugins.

Diese Funktion wurde in Qt 5.14 eingeführt.

Siehe auch setBackendProperty.

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)

Erstellt und gibt eine Positionsquelle mit der angegebenen parent zurück, die aus den Standardquellen des Systems für Positionsdaten oder aus dem Plugin mit der höchsten verfügbaren Priorität gelesen wird.

Gibt nullptr zurück, wenn das System keine Standard-Positionsquelle hat, keine gültigen Plugins gefunden werden konnten oder der Benutzer nicht die Berechtigung hat, auf die aktuelle Position zuzugreifen.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

Erstellt und gibt eine Positionsquelle mit der angegebenen parent zurück, die aus den Standardquellen des Systems für Positionsdaten oder aus dem Plugin mit der höchsten verfügbaren Priorität gelesen wird.

Gibt nullptr zurück, wenn das System keine Standardpositionsquelle hat, keine gültigen Plugins gefunden werden konnten oder der Benutzer nicht die Berechtigung hat, auf die aktuelle Position zuzugreifen.

Diese Methode übergibt parameters an die Factory, um die Quelle zu konfigurieren.

Diese Funktion wurde in Qt 5.14 eingeführt.

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)

Erzeugt und liefert eine Positionsquelle mit der angegebenen parent, indem das Plugin mit dem Namen sourceName geladen wird.

Gibt nullptr zurück, wenn das Plugin nicht gefunden wird.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

Erzeugt und liefert eine Positionsquelle mit der angegebenen parent, indem das Plugin mit dem Namen sourceName geladen wird.

Gibt nullptr zurück, wenn das Plugin nicht gefunden werden kann.

Diese Methode übergibt parameters an die Factory, um die Quelle zu konfigurieren.

Diese Funktion wurde in Qt 5.14 eingeführt.

[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const

Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.

Hinweis: Seit Qt6 wird der letzte Fehler immer zurückgesetzt, wenn startUpdates() oder requestUpdate() aufgerufen wird.

[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)

Dieses Signal wird ausgegeben, wenn ein Fehler aufgetreten ist. Der Parameter positioningError beschreibt die Art des aufgetretenen Fehlers.

[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

Liefert ein Update mit der letzten bekannten Position oder ein Null-Update, wenn keine verfügbar ist.

Wenn fromSatellitePositioningMethodsOnly true ist, wird die letzte bekannte Position zurückgegeben, die von einer Satellitenpositionierungsmethode empfangen wurde; wenn keine verfügbar ist, wird ein Null-Update zurückgegeben.

[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)

Wenn startUpdates() oder requestUpdate() aufgerufen wird, wird dieses Signal ausgegeben, wenn eine Aktualisierung verfügbar wird.

Der Wert update enthält den Wert der neuen Aktualisierung.

[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)

Versucht, die aktuelle Position zu ermitteln und sendet positionUpdated() mit dieser Information. Wenn die aktuelle Position nicht innerhalb der angegebenen timeout (in Millisekunden) gefunden werden kann oder wenn timeout kleiner ist als der von minimumUpdateInterval() zurückgegebene Wert, wird ein errorOccurred()-Signal mit UpdateTimeoutError gesendet.

Ist die Zeitüberschreitung gleich Null, wird die Zeitüberschreitung auf eine für die Quelle angemessene Zeitspanne zurückgesetzt.

Dies hat keine Auswirkungen, wenn eine andere Aktualisierungsanforderung im Gange ist. Es kann jedoch auch dann aufgerufen werden, wenn startUpdates() bereits aufgerufen wurde und regelmäßige Aktualisierungen im Gange sind.

Wenn die Quelle mehrere Positionierungsmethoden verwendet, wird versucht, die aktuelle Position von der genauesten Positionierungsmethode innerhalb des angegebenen Timeouts zu erhalten.

Hinweis: Seit Qt6 setzt diese Methode immer den letzten Fehler auf NoError zurück, bevor sie die Position anfordert.

Hinweis: Um zu verstehen, wie man diese Methode von einem Android-Dienst aus verwendet, siehe Qt Positioning auf Android.

[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)

Setzt die Backend-spezifische Eigenschaft namens name auf value. Gibt bei Erfolg true zurück, andernfalls false. Backend-spezifische Eigenschaften können verwendet werden um das Verhalten des Positionierungssubsystems zur Laufzeit zu konfigurieren. Unterstützte Backend-spezifische Eigenschaften sind aufgelistet und beschrieben in Qt Positioning plugins#Default plugins.

Diese Funktion wurde in Qt 5.14 eingeführt.

Siehe auch backendProperty.

[pure virtual slot] void QGeoPositionInfoSource::startUpdates()

Startet die Ausgabe von Aktualisierungen in regelmäßigen Abständen, wie von setUpdateInterval() angegeben.

Wenn setUpdateInterval() nicht aufgerufen wurde, gibt die Quelle Aktualisierungen aus, sobald sie verfügbar sind.

Ein errorOccurred()-Signal mit dem UpdateTimeoutError wird ausgegeben, wenn diese QGeoPositionInfoSource -Unterklasse feststellt, dass sie nicht in der Lage ist, regelmäßige Aktualisierungen zu liefern. Dies könnte der Fall sein, wenn ein Satellitenfix verloren geht oder ein Hardwarefehler festgestellt wird. Die Positionsaktualisierung wird wieder aufgenommen, wenn die Daten zu einem späteren Zeitpunkt verfügbar sind. Der Fehler UpdateTimeoutError wird erst wieder ausgegeben, wenn die regelmäßigen Aktualisierungen wieder aufgenommen werden.

Hinweis: Seit Qt6 setzt diese Methode den letzten Fehler immer auf NoError zurück, bevor die Aktualisierungen gestartet werden.

Hinweis: Um zu verstehen, wie man diese Methode von einem Android-Dienst aus verwendet, siehe Qt Positioning auf Android.

Unter iOS erfordert das Core Location Framework ab Version 8 zusätzliche Einträge in der Info.plist der Anwendung mit den Schlüsseln NSLocationAlwaysUsageDescription oder NSLocationWhenInUseUsageDescription und einem String, der in der Autorisierungsaufforderung angezeigt werden soll. Der Schlüssel NSLocationWhenInUseUsageDescription wird verwendet, wenn die Berechtigung zur Verwendung von Standortdiensten angefordert wird, während sich die Anwendung im Vordergrund befindet. Der Schlüssel NSLocationAlwaysUsageDescription wird verwendet, wenn die Erlaubnis zur Nutzung von Ortungsdiensten angefordert wird, wann immer die App läuft (sowohl im Vordergrund als auch im Hintergrund). Wenn beide Einträge definiert sind, hat NSLocationWhenInUseUsageDescription im Vordergrundmodus Vorrang.

[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()

Beendet die regelmäßige Ausgabe von Updates.

[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const

Gibt die für diese Quelle verfügbaren Positionierungsmethoden zurück. Die Verfügbarkeit ist definiert als nutzbar zum Zeitpunkt des Aufrufs dieser Funktion. Daher werden Benutzereinstellungen, wie z. B. die Deaktivierung des Ortungsdienstes oder Beschränkungen auf satellitengestützte Positionsanbieter, von dieser Funktion berücksichtigt. Laufzeitbenachrichtigungen, wenn sich der Status ändert, können über supportedPositioningMethodsChanged() abgerufen werden.

Nicht alle Plattformen unterscheiden die verschiedenen Ortungsmethoden oder teilen die aktuelle Benutzerkonfiguration des Geräts mit. Die folgende Tabelle gibt einen Überblick über die aktuelle Plattformsituation:

PlattformKurzbeschreibung
AndroidDer individuelle Providerstatus und der allgemeine Status des Ortungsdienstes sind bekannt und werden mitgeteilt, wenn der Ortungsdienst aktiv ist.
GeoClueFest eingestellt, um immer AllPositioningMethods zurückzugeben.
GeoClue2Einzelne Anbieter sind nicht unterscheidbar, aber deaktivierte Ortungsdienste werden angezeigt.
iOSFestgelegt, dass immer AllPositioningMethods zurückgegeben wird.
macOSFestgelegt, um immer AllPositioningMethods zurückzugeben.
Windows (UWP)Einzelne Anbieter sind nicht unterscheidbar, aber deaktivierte Standortdienste werden angezeigt.

Siehe auch supportedPositioningMethodsChanged() und setPreferredPositioningMethods().

[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

Dieses Signal wird ausgesendet, wenn sich die unterstützten Ortungsmethoden geändert haben. Die Ursache für eine Änderung könnte sein, dass ein Benutzer die Ortungsdienste ein- oder ausschaltet oder die Ortungsdienste auf bestimmte Arten beschränkt (z. B. nur GPS). Beachten Sie, dass Änderungen an den unterstützten Ortungsmethoden nicht auf allen Plattformen erkannt werden können. supportedPositioningMethods() bietet einen Überblick über die aktuelle Plattformunterstützung.

Diese Funktion wurde in Qt 5.12 eingeführt.

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