当前位置:编程学习 > wap >>

问个纠集一天的问题

在QT下做GPS定位遇到下面问题

GPSdriver类 定义了一个结构体 gpsdata  里面是些经纬度数据

通过timerEvent事件每秒更新GPS数据  保存在gpsdata中


在最顶层有个mianwindow类(GPSdriver gps)  通过获取gpsdata中的数据  刷新label  在界面上显示经纬度

然后还有个类为localpoint(GPSdriver gps)   通过获取gpsdata中的数据  绘制当前位置的一个点


现在问题来了  mainwindow中能获取数据  显示出来   而localpoint类读取不到数据 

在GPSdriver中  输出的数据gpsdata  确实是有更新的数据

但是在localpoint类中  用qDebug()输出   程序就卡住

用printf 经纬度%f     结果输出都为零

问题就在与 为啥 类localpoint中访问GPSdriver中的gpsdata   获取不到数据

而类mianwindow中访问GPSdriver中的gpsdata   就能读取到数据




高手  请留下只言片语  给小弟一点提示   到底哪出问题了 --------------------编程问答-------------------- 你不贴一下你的localpoint类,谁也不能蒙出问题所在……
如果你不让localpoint直接去读,而是从mianwindow的label上获得呢?避开二次读取信息 --------------------编程问答-------------------- 很感谢楼上的  

这方法我也试过了   效果还是一样的    还是读不到数据


附上  改过的程序


typedef struct{
float fTime;
float fY;
char cY;
float fX;
char cX;
}GPGGA;

class gpsdriver:public QObject
{
Q_OBJECT
public:

GPGGA mGPGGA;

};

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:

gpsdriver gps;


class localpoint:public QObject,public QGraphicsItem
{
                        Q_OBJECT
public:
                  gpsdriver gps;



就这个意思  帮忙看看 --------------------编程问答-------------------- 利用
localpoint lp;设置断点在此看看有没有数据更新,我觉得应该是更新的时候你没有更新到localpoint中,你保存的时候需要两个都保存进去 也就是要在loaclpoint保存一次,同时在MainWindow中也要保存一次,你这个地方不是菱形结构,不用共用同一块地址空间的 也就是每次更新两个变量需要同时更新 --------------------编程问答--------------------
引用 2 楼 lanjianchun 的回复:
很感谢楼上的  

这方法我也试过了   效果还是一样的    还是读不到数据


附上  改过的程序


typedef struct{
float fTime;
float fY;
char cY;
float fX;
char cX;
}GPGGA;

class gpsdriver:public QObject
{
Q_OBJECT
public:
……


我明白你的这个意思,但是单从这段程序看不出来原因 --------------------编程问答--------------------
引用 3 楼 hnuqinhuan 的回复:
利用
localpoint lp;设置断点在此看看有没有数据更新,我觉得应该是更新的时候你没有更新到localpoint中,你保存的时候需要两个都保存进去 也就是要在loaclpoint保存一次,同时在MainWindow中也要保存一次,你这个地方不是菱形结构,不用共用同一块地址空间的 也就是每次更新两个变量需要同时更新


不是很懂你的意思    --------------------编程问答-------------------- 多线程吗? --------------------编程问答-------------------- mianwindow类中的GPSdriver和localpoint中的GPSdriver是两个不同的对象,当然要为这两个不同的对象分别发送一份数据了。或者你把2个driver都设成指针,共享同一个数据对象。 --------------------编程问答--------------------
引用 7 楼 jing_liu_lucky 的回复:
mianwindow类中的GPSdriver和localpoint中的GPSdriver是两个不同的对象,当然要为这两个不同的对象分别发送一份数据了。或者你把2个driver都设成指针,共享同一个数据对象。

同意~~省的2次更新 --------------------编程问答-------------------- 数据类最好用单实例好点吧
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,