问个纠集一天的问题

lanjianchun 2011-11-12 04:51:07
在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 就能读取到数据




高手 请留下只言片语 给小弟一点提示 到底哪出问题了
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyiigpgf 2011-11-20
  • 打赏
  • 举报
回复
数据类最好用单实例好点吧
myseemylife 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jing_liu_lucky 的回复:]
mianwindow类中的GPSdriver和localpoint中的GPSdriver是两个不同的对象,当然要为这两个不同的对象分别发送一份数据了。或者你把2个driver都设成指针,共享同一个数据对象。
[/Quote]
同意~~省的2次更新
jing_liu_lucky 2011-11-17
  • 打赏
  • 举报
回复
mianwindow类中的GPSdriver和localpoint中的GPSdriver是两个不同的对象,当然要为这两个不同的对象分别发送一份数据了。或者你把2个driver都设成指针,共享同一个数据对象。
lyyscf 2011-11-14
  • 打赏
  • 举报
回复
多线程吗?
lanjianchun 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hnuqinhuan 的回复:]

利用
localpoint lp;设置断点在此看看有没有数据更新,我觉得应该是更新的时候你没有更新到localpoint中,你保存的时候需要两个都保存进去 也就是要在loaclpoint保存一次,同时在MainWindow中也要保存一次,你这个地方不是菱形结构,不用共用同一块地址空间的 也就是每次更新两个变量需要同时更新
[/Quote]

不是很懂你的意思
念茜 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lanjianchun 的回复:]

很感谢楼上的

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


附上 改过的程序


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

class gpsdriver:public QObject
{
Q_OBJECT
public:
……
[/Quote]

我明白你的这个意思,但是单从这段程序看不出来原因
無_1024 2011-11-12
  • 打赏
  • 举报
回复
利用
localpoint lp;设置断点在此看看有没有数据更新,我觉得应该是更新的时候你没有更新到localpoint中,你保存的时候需要两个都保存进去 也就是要在loaclpoint保存一次,同时在MainWindow中也要保存一次,你这个地方不是菱形结构,不用共用同一块地址空间的 也就是每次更新两个变量需要同时更新
lanjianchun 2011-11-12
  • 打赏
  • 举报
回复
很感谢楼上的

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


附上 改过的程序


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;



就这个意思 帮忙看看
念茜 2011-11-12
  • 打赏
  • 举报
回复
你不贴一下你的localpoint类,谁也不能蒙出问题所在……
如果你不让localpoint直接去读,而是从mianwindow的label上获得呢?避开二次读取信息

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧