Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
|
\inmodule QtPositioning More...
#include <qgeopositioninfosource.h>
Public Types | |
enum | Error { AccessError = 0 , ClosedError = 1 , UnknownSourceError = 2 , NoError = 3 , UpdateTimeoutError = 4 } |
The Error enumeration represents the errors which can occur. More... | |
enum | PositioningMethod { NoPositioningMethods = 0x00000000 , SatellitePositioningMethods = 0x000000ff , NonSatellitePositioningMethods = 0xffffff00 , AllPositioningMethods = 0xffffffff } |
Defines the types of positioning methods. More... | |
Public Slots | |
virtual void | startUpdates ()=0 |
Starts emitting updates at regular intervals as specified by setUpdateInterval(). | |
virtual void | stopUpdates ()=0 |
Stops emitting updates at regular intervals. | |
virtual void | requestUpdate (int timeout=0)=0 |
Attempts to get the current position and emit positionUpdated() with this information. | |
Public Slots inherited from QObject | |
void | deleteLater () |
\threadsafe | |
Signals | |
void | positionUpdated (const QGeoPositionInfo &update) |
If startUpdates() or requestUpdate() is called, this signal is emitted when an update becomes available. | |
void | errorOccurred (QGeoPositionInfoSource::Error) |
This signal is emitted after an error occurred. | |
void | supportedPositioningMethodsChanged () |
This signal is emitted when the supported positioning methods changed. | |
Signals inherited from QObject | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
Public Member Functions | |
QGeoPositionInfoSource (QObject *parent) | |
Creates a position source with the specified parent. | |
virtual | ~QGeoPositionInfoSource () |
Destroys the position source. | |
virtual void | setUpdateInterval (int msec) |
int | updateInterval () const |
QBindable< int > | bindableUpdateInterval () |
virtual void | setPreferredPositioningMethods (PositioningMethods methods) |
PositioningMethods | preferredPositioningMethods () const |
QBindable< PositioningMethods > | bindablePreferredPositioningMethods () |
virtual QGeoPositionInfo | lastKnownPosition (bool fromSatellitePositioningMethodsOnly=false) const =0 |
Returns an update containing the last known position, or a null update if none is available. | |
virtual PositioningMethods | supportedPositioningMethods () const =0 |
Returns the positioning methods available to this source. | |
virtual int | minimumUpdateInterval () const =0 |
QString | sourceName () const |
virtual bool | setBackendProperty (const QString &name, const QVariant &value) |
Sets the backend-specific property named name to value. | |
virtual QVariant | backendProperty (const QString &name) const |
Returns the value of the backend-specific property named name, if present. | |
virtual Error | error () const =0 |
Returns the type of error that last occurred. | |
Public Member Functions inherited from QObject | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
bool | moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL) |
Changes the thread affinity for this object and its children and returns true on success. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
void | killTimer (Qt::TimerId id) |
template<typename T > | |
T | findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
T | findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
Static Public Member Functions | |
static QGeoPositionInfoSource * | createDefaultSource (QObject *parent) |
Creates and returns a position source with the given parent that reads from the system's default sources of location data, or the plugin with the highest available priority. | |
static QGeoPositionInfoSource * | createDefaultSource (const QVariantMap ¶meters, QObject *parent) |
Creates and returns a position source with the given parent that reads from the system's default sources of location data, or the plugin with the highest available priority. | |
static QGeoPositionInfoSource * | createSource (const QString &sourceName, QObject *parent) |
Creates and returns a position source with the given parent, by loading the plugin named sourceName. | |
static QGeoPositionInfoSource * | createSource (const QString &sourceName, const QVariantMap ¶meters, QObject *parent) |
Creates and returns a position source with the given parent, by loading the plugin named sourceName. | |
static QStringList | availableSources () |
Returns a list of available source plugins. | |
Static Public Member Functions inherited from QObject | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
Protected Member Functions | |
QGeoPositionInfoSource (QGeoPositionInfoSourcePrivate &dd, QObject *parent) | |
Protected Member Functions inherited from QObject | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
Properties | |
int | updateInterval |
This property holds the requested interval in milliseconds between each update. | |
int | minimumUpdateInterval |
This property holds the minimum time (in milliseconds) required to retrieve a position update. | |
QString | sourceName |
This property holds the unique name of the position source implementation in use. | |
PositioningMethods | preferredPositioningMethods |
Sets the preferred positioning methods for this source. | |
Properties inherited from QObject | |
QString | objectName |
the name of this object | |
Additional Inherited Members | |
Protected Attributes inherited from QObject | |
QScopedPointer< QObjectData > | d_ptr |
Related Symbols inherited from QObject | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
\inmodule QtPositioning
The QGeoPositionInfoSource class is an abstract base class for the distribution of positional updates.
The static function QGeoPositionInfoSource::createDefaultSource() creates a default position source that is appropriate for the platform, if one is available. Otherwise, QGeoPositionInfoSource will check for available plugins that implement the QGeoPositionInfoSourceFactory interface.
Users of a QGeoPositionInfoSource subclass can request the current position using requestUpdate(), or start and stop regular position updates using startUpdates() and stopUpdates(). When an update is available, positionUpdated() is emitted. The last known position can be accessed with lastKnownPosition().
If regular position updates are required, setUpdateInterval() can be used to specify how often these updates should be emitted. If no interval is specified, updates are simply provided whenever they are available. For example:
To remove an update interval that was previously set, call setUpdateInterval() with a value of 0.
Definition at line 14 of file qgeopositioninfosource.h.
The Error enumeration represents the errors which can occur.
\value AccessError The connection setup to the remote positioning backend failed because the application lacked the required privileges. \value ClosedError The remote positioning backend closed the connection, which happens for example in case the user is switching location services to off. As soon as the location service is re-enabled regular updates will resume. \value NoError No error has occurred. \value UnknownSourceError An unidentified error occurred. \value [since 6.2] UpdateTimeoutError If requestUpdate() was called, this error indicates that the current position could not be retrieved within the specified timeout. If startUpdates() was called, this error indicates that this QGeoPositionInfoSource subclass determined that it will not be able to provide further regular updates. In the latter case the error would not be emitted again until after the regular updates resume.
Enumerator | |
---|---|
AccessError | |
ClosedError | |
UnknownSourceError | |
NoError | |
UpdateTimeoutError |
Definition at line 25 of file qgeopositioninfosource.h.
Defines the types of positioning methods.
\value NoPositioningMethods None of the positioning methods. \value SatellitePositioningMethods Satellite-based positioning methods such as GPS or GLONASS. \value NonSatellitePositioningMethods Other positioning methods such as 3GPP cell identifier or WiFi based positioning. \value AllPositioningMethods Satellite-based positioning methods as soon as available. Otherwise non-satellite based methods.
Enumerator | |
---|---|
NoPositioningMethods | |
SatellitePositioningMethods | |
NonSatellitePositioningMethods | |
AllPositioningMethods |
Definition at line 34 of file qgeopositioninfosource.h.
|
explicit |
Creates a position source with the specified parent.
Definition at line 146 of file qgeopositioninfosource.cpp.
|
virtual |
Destroys the position source.
Definition at line 155 of file qgeopositioninfosource.cpp.
|
explicitprotected |
Definition at line 410 of file qgeopositioninfosource.cpp.
|
static |
Returns a list of available source plugins.
This includes any default backend plugin for the current platform.
Definition at line 396 of file qgeopositioninfosource.cpp.
Returns the value of the backend-specific property named name, if present.
Otherwise, the returned value will be invalid. Supported backend-specific properties are listed and described in \l {Qt Positioning plugins#Default plugins}.
Definition at line 200 of file qgeopositioninfosource.cpp.
QBindable< QGeoPositionInfoSource::PositioningMethods > QGeoPositionInfoSource::bindablePreferredPositioningMethods | ( | ) |
Definition at line 305 of file qgeopositioninfosource.cpp.
QBindable< int > QGeoPositionInfoSource::bindableUpdateInterval | ( | ) |
Definition at line 247 of file qgeopositioninfosource.cpp.
|
static |
Creates and returns a position source with the given parent that reads from the system's default sources of location data, or the plugin with the highest available priority.
Returns nullptr
if the system has no default position source, no valid plugins could be found or the user does not have the permission to access the current position.
This method passes parameters to the factory to configure the source.
Definition at line 349 of file qgeopositioninfosource.cpp.
|
static |
Creates and returns a position source with the given parent that reads from the system's default sources of location data, or the plugin with the highest available priority.
Returns nullptr
if the system has no default position source, no valid plugins could be found or the user does not have the permission to access the current position.
Definition at line 332 of file qgeopositioninfosource.cpp.
|
static |
Creates and returns a position source with the given parent, by loading the plugin named sourceName.
Returns nullptr
if the plugin cannot be found.
This method passes parameters to the factory to configure the source.
Definition at line 384 of file qgeopositioninfosource.cpp.
|
static |
Creates and returns a position source with the given parent, by loading the plugin named sourceName.
Returns nullptr
if the plugin cannot be found.
Definition at line 369 of file qgeopositioninfosource.cpp.
|
pure virtual |
Returns the type of error that last occurred.
Implemented in QGeoPositionInfoSourceAndroid, QGeoPositionInfoSourceCL, QGeoPositionInfoSourceGeoclue2, QGeoPositionInfoSourceWinRT, and QNmeaPositionInfoSource.
|
signal |
This signal is emitted after an error occurred.
The positioningError parameter describes the type of error that occurred.
|
pure virtual |
Returns an update containing the last known position, or a null update if none is available.
If fromSatellitePositioningMethodsOnly is true, this returns the last known position received from a satellite positioning method; if none is available, a null update is returned.
Implemented in QGeoPositionInfoSourceAndroid, QGeoPositionInfoSourceCL, QGeoPositionInfoSourceGeoclue2, QGeoPositionInfoSourceWinRT, and QNmeaPositionInfoSource.
|
pure virtual |
|
signal |
If startUpdates() or requestUpdate() is called, this signal is emitted when an update becomes available.
The update value holds the value of the new update.
QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::preferredPositioningMethods | ( | ) | const |
Definition at line 298 of file qgeopositioninfosource.cpp.
|
pure virtualslot |
Attempts to get the current position and emit positionUpdated() with this information.
If the current position cannot be found within the given timeout (in milliseconds) or if timeout is less than the value returned by minimumUpdateInterval(), an errorOccurred() signal with the \l {QGeoPositionInfoSource::}{UpdateTimeoutError} is emitted.
If the timeout is zero, the timeout defaults to a reasonable timeout period as appropriate for the source.
This does nothing if another update request is in progress. However it can be called even if startUpdates() has already been called and regular updates are in progress.
If the source uses multiple positioning methods, it tries to get the current position from the most accurate positioning method within the given timeout.
Implemented in QGeoPositionInfoSourceGeoclue2.
|
virtual |
Sets the backend-specific property named name to value.
Returns true
on success, false
otherwise. Backend-specific properties can be used to configure the positioning subsystem behavior at runtime. Supported backend-specific properties are listed and described in \l {Qt Positioning plugins#Default plugins}.
Definition at line 184 of file qgeopositioninfosource.cpp.
|
virtual |
Reimplemented in QGeoPositionInfoSourceAndroid, QGeoPositionInfoSourceGeoclue2, and QGeoPositionInfoSourceWinRT.
Definition at line 276 of file qgeopositioninfosource.cpp.
|
virtual |
Reimplemented in QGeoPositionInfoSourceAndroid, QGeoPositionInfoSourceCL, QGeoPositionInfoSourceGeoclue2, QGeoPositionInfoSourceWinRT, and QNmeaPositionInfoSource.
Definition at line 235 of file qgeopositioninfosource.cpp.
QString QGeoPositionInfoSource::sourceName | ( | ) | const |
Definition at line 167 of file qgeopositioninfosource.cpp.
|
pure virtualslot |
Starts emitting updates at regular intervals as specified by setUpdateInterval().
If setUpdateInterval() has not been called, the source will emit updates as soon as they become available.
An errorOccurred() signal with the \l {QGeoPositionInfoSource::} {UpdateTimeoutError} will be emitted if this QGeoPositionInfoSource subclass determines that it will not be able to provide regular updates. This could happen if a satellite fix is lost or if a hardware error is detected. Position updates will recommence if the data becomes available later on. The \l {QGeoPositionInfoSource::}{UpdateTimeoutError} error will not be emitted again until after the periodic updates resume.
On iOS, starting from version 8, Core Location framework requires additional entries in the application's Info.plist with keys NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription and a string to be displayed in the authorization prompt. The key NSLocationWhenInUseUsageDescription is used when requesting permission to use location services while the app is in the foreground. The key NSLocationAlwaysUsageDescription is used when requesting permission to use location services whenever the app is running (both the foreground and the background). If both entries are defined, NSLocationWhenInUseUsageDescription has a priority in the foreground mode.
Implemented in QGeoPositionInfoSourceGeoclue2.
|
pure virtualslot |
Stops emitting updates at regular intervals.
Implemented in QGeoPositionInfoSourceGeoclue2.
|
pure virtual |
Returns the positioning methods available to this source.
Availability is defined as being usable at the time of calling this function. Therefore user settings like turned off location service or limitations to Satellite-based position providers are reflected by this function. Runtime notifications when the status changes can be obtained via \l supportedPositioningMethodsChanged().
Not all platforms distinguish the different positioning methods or communicate the current user configuration of the device. The following table provides an overview of the current platform situation:
\table \header
Implemented in QGeoPositionInfoSourceAndroid, QGeoPositionInfoSourceCL, QGeoPositionInfoSourceGeoclue2, QGeoPositionInfoSourceWinRT, and QNmeaPositionInfoSource.
|
signal |
This signal is emitted when the supported positioning methods changed.
The cause for a change could be a user turning Location services on/off or restricting Location services to certain types (e.g. GPS only). Note that changes to the supported positioning methods cannot be detected on all platforms. \l supportedPositioningMethods() provides an overview of the current platform support.
int QGeoPositionInfoSource::updateInterval | ( | ) | const |
Definition at line 241 of file qgeopositioninfosource.cpp.
|
read |
This property holds the minimum time (in milliseconds) required to retrieve a position update.
This is the minimum value accepted by setUpdateInterval() and requestUpdate().
Definition at line 19 of file qgeopositioninfosource.h.
|
read |
Sets the preferred positioning methods for this source.
If new methods include a method that is not supported by the source, the unsupported method will be ignored.
If new methods do not include a single method available/supported by the source, the preferred methods will be set to the set of methods which the source has available. If the source has no method availabe (e.g. because its Location service is turned off or it does not offer a Location service), the passed methods are accepted as they are.
The default value for this property is \l {QGeoPositionInfoSource::} {NoPositioningMethods}.
{setPreferredPositioningMethods()}
to ensure {preferredPositioningMethods()}
returns the correct value.Definition at line 21 of file qgeopositioninfosource.h.
|
read |
This property holds the unique name of the position source implementation in use.
This is the same name that can be passed to createSource() in order to create a new instance of a particular position source implementation.
Definition at line 20 of file qgeopositioninfosource.h.
|
readwrite |
This property holds the requested interval in milliseconds between each update.
If the update interval is not set (or is set to 0) the source will provide updates as often as necessary.
If the update interval is set, the source will provide updates at an interval as close to the requested interval as possible. If the requested interval is less than the minimumUpdateInterval(), the minimum interval is used instead.
Changes to the update interval will happen as soon as is practical, however the time the change takes may vary between implementations. Whether or not the elapsed time from the previous interval is counted as part of the new interval is also implementation dependent.
The default value for this property is 0.
{setUpdateInterval()}
so that {updateInterval()}
returns the correct value.Definition at line 17 of file qgeopositioninfosource.h.