我在QTCreator for Android中编写了一个应用程序。从gps我的位置有问题。
当我在手机中运行应用程序时,我没有协调。在qDebug
我看到了:
(void gps :: startLocationAPI()):QGeoPositionInfoSourceAndroid(0x9f8c06d0)
什么是括号没有重要性,因为每次此值不同(0xb03c9ba0,0xb03d2ba0,0xf01c9d10)
这是我的代码:
gps.h:
#ifndef GPS_H
#define GPS_H
#include <QMainWindow>
#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>
class gps : public QObject
{
Q_OBJECT
public:
explicit gps(QWidget *parent = 0);
virtual ~gps();
public slots:
void positionUpdated(QGeoPositionInfo geoPositionInfo);
void startLocationAPI();
private:
QGeoPositionInfoSource *m_pLocationInfo;
};
#endif //GPS_H
gps.cpp
#include "gps.h"
#include <QGeoCoordinate>
#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>
#include <QDebug>
gps::gps(QWidget *parent)
: QObject(parent), m_pLocationInfo(NULL)
{
startLocationAPI();
}
gps::~gps()
{
}
void gps::startLocationAPI()
{
if (!m_pLocationInfo)
{
m_pLocationInfo =QGeoPositionInfoSource::createDefaultSource(0);
m_pLocationInfo->setPreferredPositioningMethods(QGeoPositionInfoSource::NonSatellitePositioningMethods);
connect(m_pLocationInfo, SIGNAL (positionUpdated(QGeoPositionInfo)),this, SLOT (positionUpdated(QGeoPositionInfo)));
m_pLocationInfo->startUpdates();
qDebug() << m_pLocationInfo;
}
}
void gps::positionUpdated(QGeoPositionInfo geoPositionInfo)
{
}
答案 0 :(得分:0)
如果输出m_pLocationInfo
,它将始终输出不同的地址,因为这是一个指针,并且每次运行程序时其地址很可能会更改。
如果你这样做:
void gps::positionUpdated(QGeoPositionInfo geoPositionInfo)
{
qDebug() << geoPositionInfo.coordinate().toString();
}
然后你应该得到gps坐标。
您可能希望连接error
信号,以了解是否出现问题:
在gps::startLocationAPI()
中,添加
connect(m_pLocationInfo, SIGNAL (error(QGeoPositionInfoSource::Error )),this, SLOT (error(QGeoPositionInfoSource::Error)));
并将error(QGeoPositionInfoSource::Error)
设为gps类的插槽:
void gps::error(QGeoPositionInfoSource::Error positioningError)
{
qDebug() << "An error occured: " << positioningError;
}
然后你会知道出了什么问题。