Auf dieser Seite

QGeoPositionInfoSource Class

Die Klasse „QGeoPositionInfoSource“ ist eine abstrakte Basisklasse für die Verteilung von Positionsaktualisierungen. Mehr...

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

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()` erstellt eine für die jeweilige Plattform geeignete Standard-Positionsquelle, sofern eine verfügbar ist. Andernfalls prüft `QGeoPositionInfoSource`, ob Plugins verfügbar sind, die die Schnittstelle ` QGeoPositionInfoSourceFactory ` implementieren.

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

Wenn regelmäßige Positionsaktualisierungen erforderlich sind, kann mit ` setUpdateInterval()` festgelegt werden, wie oft diese Aktualisierungen ausgegeben werden sollen. Wird kein Intervall angegeben, werden Aktualisierungen einfach bereitgestellt, sobald sie verfügbar sind. 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 dem Wert 0 auf.

Hinweis: Die Positionsquelle kann eine Mindestanforderung für Aktualisierungsintervalle haben, wie sie von ` minimumUpdateInterval()` zurückgegeben wird.

Hinweis: Informationen zur Verwendung dieser Klasse in einem Android-Dienst finden Sie unter „Qt Positioning “ auf Android.

Dokumentation zu den Mitgliedstypen

enum QGeoPositionInfoSource::Error

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

KonstanteWertBeschreibung
QGeoPositionInfoSource::AccessError0Der Verbindungsaufbau zum Remote-Positionierungs-Backend ist fehlgeschlagen, da der Anwendung die erforderlichen Berechtigungen fehlten.
QGeoPositionInfoSource::ClosedError1Das Remote-Positionierungs-Backend hat die Verbindung geschlossen, was beispielsweise dann geschieht, wenn der Benutzer die Standortdienste deaktiviert. Sobald die Standortdienste wieder aktiviert sind, werden die regelmäßigen Aktualisierungen fortgesetzt.
QGeoPositionInfoSource::NoError3Es ist kein Fehler aufgetreten.
QGeoPositionInfoSource::UnknownSourceError2Es ist ein nicht identifizierter Fehler aufgetreten.
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2)4Wurde „ requestUpdate()“ aufgerufen, bedeutet dieser Fehler, dass die aktuelle Position nicht innerhalb der angegebenen Zeitüberschreitung abgerufen werden konnte. Wurde „ startUpdates()“ aufgerufen, bedeutet dieser Fehler, dass diese „ QGeoPositionInfoSource “-Unterklasse festgestellt hat, dass sie keine weiteren regelmäßigen Aktualisierungen bereitstellen kann. Im letzteren Fall wird der Fehler erst wieder ausgegeben, sobald die regelmäßigen Aktualisierungen wieder aufgenommen werden.

enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods

Definiert die Arten von Positionierungsmethoden.

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

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

Eigenschaftsdokumentation

[read-only] minimumUpdateInterval : int

Diese Eigenschaft gibt die Mindestzeit (in Millisekunden) an, die zum Abrufen einer Positionsaktualisierung benötigt wird.

Dies ist der Mindestwert, der von den Funktionen „ 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 unter „neue Methoden“ eine Methode enthalten ist, die von der Quelle nicht unterstützt wird, wird die nicht unterstützte Methode ignoriert.

Wenn unter den neuen Methoden keine einzige Methode enthalten ist, die von der Quelle verfügbar ist bzw. unterstützt wird, werden die bevorzugten Methoden auf die Methoden festgelegt, die der Quelle zur Verfügung stehen. Wenn der Quelle keine Methode zur Verfügung steht (z. B. weil ihr Standortdienst deaktiviert ist oder sie keinen Standortdienst anbietet), werden die übergebenen Methoden unverändert akzeptiert.

Der Standardwert für diese Eigenschaft lautet „ NoPositioningMethods “.

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

Zugriffsfunktionen:

QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods() const
virtual void setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)

Siehe auch ` supportedPositioningMethods()`.

[read-only] sourceName : QString

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

Dies ist derselbe Name, der an die Funktion ` 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), liefert die Quelle Aktualisierungen so oft wie nötig.

Ist das Aktualisierungsintervall festgelegt, liefert die Quelle Aktualisierungen in einem Intervall, das dem angeforderten Intervall so nahe wie möglich kommt. Ist das angeforderte Intervall kleiner als der Wert von ` minimumUpdateInterval()`, wird stattdessen das Mindestintervall verwendet.

Änderungen am Aktualisierungsintervall werden so schnell wie möglich vorgenommen; die dafür benötigte Zeit kann jedoch je nach Implementierung variieren. Ob die seit dem letzten Intervall verstrichene Zeit als Teil des neuen Intervalls gezählt wird, hängt ebenfalls von der jeweiligen Implementierung ab.

Der Standardwert für diese Eigenschaft ist 0.

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

Hinweis: Diese Eigenschaft kann nicht zur Anpassung der Aktualisierungsfrequenz unter iOS und macOS verwendet werden, da deren APIs diese Möglichkeit nicht bieten. Auf diesen Systemen dient dieser Parameter lediglich dazu, ` UpdateTimeoutError ` festzulegen und ein ` errorOccurred `-Signal auszulösen, falls die Aktualisierung nicht innerhalb des gewünschten Intervalls empfangen wird.

Zugriffsfunktionen:

int updateInterval() const
virtual void setUpdateInterval(int msec)

Dokumentation zu den Member-Funktionen

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

Erstellt eine Positionsquelle mit der angegebenen „ parent “.

[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()

Löscht die Positionsquelle.

[static] QStringList QGeoPositionInfoSource::availableSources()

Gibt eine Liste der verfügbaren Quell-Plugins zurück. Dazu gehört auch jedes Standard-Backend-Plugin für die aktuelle Plattform.

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

Gibt den Wert der backend-spezifischen Eigenschaft „ name “ zurück, sofern vorhanden. Andernfalls ist der zurückgegebene Wert ungültig. Unterstützte backend-spezifische Eigenschaften sind unter Qt Positioning plugins#Default-Plugins aufgelistet und beschrieben.

Diese Funktion wurde in Qt 5.14 eingeführt.

Siehe auch setBackendProperty.

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

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

Gibt „ nullptr “ zurück, wenn das System über keine Standard-Positionsquelle verfügt, keine gültigen Plugins gefunden werden konnten oder der Benutzer keine Berechtigung zum Zugriff auf die aktuelle Position hat.

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

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

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

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)

Erstellt eine Positionsquelle mit dem angegebenen „ parent “ und gibt diese zurück, indem das Plugin mit dem Namen „ sourceName “ geladen wird.

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

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

Erstellt und gibt eine Positionsquelle mit dem angegebenen „ parent “ zurück, 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 beim Aufruf von ` startUpdates()` oder ` requestUpdate()` immer zurückgesetzt.

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

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

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

Gibt ein Update zurück, das die zuletzt bekannte Position enthält, oder ein Null-Update, falls keine Position verfügbar ist.

Ist „ fromSatellitePositioningMethodsOnly “ auf „true“ gesetzt, wird die zuletzt bekannte Position zurückgegeben, die von einem Satellitenortungsverfahren empfangen wurde; ist keine verfügbar, wird ein Null-Update zurückgegeben.

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

Wenn „ startUpdates()“ oder „ requestUpdate()“ aufgerufen wird, wird dieses Signal ausgegeben, sobald ein Update verfügbar ist.

Der Wert von ` update ` enthält den Wert des neuen Updates.

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

Versucht, die aktuelle Position zu ermitteln, und sendet mit diesen Informationen ein „ positionUpdated()“-Signal aus. 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 dem „ UpdateTimeoutError “ ausgesendet.

Ist die Zeitüberschreitung gleich Null, wird standardmäßig eine für die Quelle angemessene Zeitüberschreitungsdauer verwendet.

Dies hat keine Auswirkungen, wenn gerade eine andere Aktualisierungsanforderung läuft. Die Funktion kann jedoch auch dann aufgerufen werden, wenn „ startUpdates()“ bereits aufgerufen wurde und reguläre Aktualisierungen laufen.

Wenn die Quelle mehrere Positionsbestimmungsmethoden verwendet, versucht sie, die aktuelle Position innerhalb des angegebenen Timeouts von der genauesten Positionsbestimmungsmethode zu ermitteln.

Hinweis: Seit Qt6 setzt diese Methode vor der Abfrage der Position immer den letzten Fehler auf „ NoError “ zurück.

Hinweis: Informationen zur Verwendung dieser Methode in einem Android-Dienst findenSie unter „Qt Positioning “ auf Android.

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

Setzt die backend-spezifische Eigenschaft „ 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 unter Qt Positioning plugins#Default-Plugins aufgelistet und beschrieben.

Diese Funktion wurde in Qt 5.14 eingeführt.

Siehe auch backendProperty.

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

Gibt in regelmäßigen Abständen Aktualisierungen aus, wie durch die Funktion „ setUpdateInterval()“ festgelegt.

Wurde ` setUpdateInterval()` nicht aufgerufen, sendet die Quelle Aktualisierungen, sobald diese verfügbar sind.

Ein Signal „ errorOccurred()“ mit dem Wert „ UpdateTimeoutError “ wird ausgelöst, wenn diese Unterklasse von „ QGeoPositionInfoSource “ feststellt, dass sie keine regelmäßigen Aktualisierungen bereitstellen kann. Dies kann passieren, wenn die Satellitenverbindung unterbrochen wird oder ein Hardwarefehler erkannt wird. Die Positionsaktualisierungen werden wieder aufgenommen, sobald die Daten später wieder verfügbar sind. Der Fehler „ UpdateTimeoutError “ wird erst wieder ausgelöst, nachdem die periodischen Aktualisierungen wieder aufgenommen wurden.

Hinweis: Seit Qt6 setzt diese Methode vor dem Start der Aktualisierungen stets den letzten Fehler auf „ NoError “ zurück.

Hinweis: Informationen zur Verwendung dieser Methode in einem Android-Dienst findenSie unter „Qt Positioning “ auf Android.

Unter iOS erfordert das Core Location-Framework ab Version 8 zusätzliche Einträge in der Datei „Info.plist“ der Anwendung mit den Schlüsseln „NSLocationAlwaysUsageDescription“ oder „NSLocationWhenInUseUsageDescription“ sowie einer Zeichenfolge, die in der Autorisierungsabfrage angezeigt werden soll. Der Schlüssel „NSLocationWhenInUseUsageDescription“ wird verwendet, wenn die Berechtigung zur Nutzung von Standortdiensten angefordert wird, während sich die App im Vordergrund befindet. Der Schlüssel „NSLocationAlwaysUsageDescription“ wird verwendet, wenn die Berechtigung zur Nutzung von Standortdiensten angefordert wird, sobald die App ausgeführt wird (sowohl im Vordergrund als auch im Hintergrund). Sind beide Einträge definiert, hat „NSLocationWhenInUseUsageDescription“ im Vordergrundmodus Vorrang.

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

Beendet die Ausgabe von Aktualisierungen in regelmäßigen Abständen.

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

Gibt die für diese Quelle verfügbaren Ortungsmethoden zurück. Die Verfügbarkeit ist definiert als die Nutzbarkeit zum Zeitpunkt des Aufrufs dieser Funktion. Daher werden Benutzereinstellungen wie deaktivierte Ortungsdienste oder Einschränkungen für satellitengestützte Ortungsanbieter von dieser Funktion berücksichtigt. Laufzeitbenachrichtigungen bei Statusänderungen können über ` supportedPositioningMethodsChanged()` abgerufen werden.

Nicht alle Plattformen unterscheiden zwischen den verschiedenen Ortungsmethoden oder geben die aktuelle Benutzerkonfiguration des Geräts weiter. Die folgende Tabelle bietet einen Überblick über die aktuelle Situation auf den verschiedenen Plattformen:

PlattformKurzbeschreibung
AndroidDer Status einzelner Anbieter sowie der allgemeine Status des Standortdienstes sind bekannt und werden übermittelt, wenn der Standortdienst aktiv ist.
GeoClueFest programmiert, immer „ AllPositioningMethods “ zurückzugeben.
GeoClue2Einzelne Anbieter sind nicht unterscheidbar, deaktivierte Ortungsdienste werden jedoch berücksichtigt.
iOSFest programmiert, immer „ AllPositioningMethods “ zurückzugeben.
macOSFest programmiert, immer „ AllPositioningMethods “ zurückzugeben.
Windows (UWP)Einzelne Anbieter sind nicht unterscheidbar, deaktivierte Ortungsdienste werden jedoch berücksichtigt.

Siehe auch supportedPositioningMethodsChanged() und setPreferredPositioningMethods().

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

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

Diese Funktion wurde in Qt 5.12 eingeführt.

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