QT动态绘制路径出现了BUG,路过的大神帮忙解决下

wyjblue 2014-05-16 02:27:33
我要实现的功能是在View显示,scene类中实时根据下位机发来的数据修改路径
代码架构 view类中直接调用 setscene(&scene)来绘制
myscen类中调用虚函数drawForeground来绘制动态路径
程序正常运行几分钟后就出现BUG
正常的时候如下图,蓝色的是绘制出来的路径实时变化的

代码如下:
  
///或许下位机发来的数据 间隔20毫秒
void myscen::getPath( ArNetPacket * packet )
{
int numPoints;
static bool firstpoint=false;
numPoints=packet->bufToByte2();
if (numPoints!=0)
{
mPath = QPainterPath();
firstpoint=true;
for (int num=0;num<numPoints;num++)
{

int pathx=packet->bufToByte4();
int pathy=packet->bufToByte4();
if (firstpoint)
{
//mPath.moveTo(mPath.currentPosition());
mPath.moveTo(QPointF(pathx,pathy));
firstpoint=false;
}
else
{
mPath.lineTo(QPointF(pathx,pathy));
}
}
mPath.currentPosition();
// myupdata=true;

}


}
/// 把绘制的mpath画的画布上
void myscen::drawForeground(QPainter *painter, const QRectF &rect)
{
if (!mPath.isEmpty())
{
painter->save();
mpathpen.setCosmetic(true);
mpathpen.setColor(Qt::blue);
mpathpen.setWidth(3);
painter->setPen(mpathpen);
painter->drawPath(mPath);
//painter->strokePath(mPath,mpathpen);
painter->restore();
//this->invalidate(rect ,QGraphicsScene::ForegroundLayer);

}
//painter=new QPainter();
//this->update(rect);
//this->invalidate(rect ,QGraphicsScene::ForegroundLayer);
}
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyjblue 2014-05-16
  • 打赏
  • 举报
回复
问题解决了,是上位机的数据没给加锁 引起的
wyjblue 2014-05-16
  • 打赏
  • 举报
回复
获取下位机的代码这段是个回调函数,程序跑起来就自动每个20毫秒执行一次 void myscen::getPath( ArNetPacket * packet ) drawForeground是个虚函数也是自己调用的 void myscen::drawForeground(QPainter *painter, const QRectF &rect) 我在getpath里面加了一个bool的开关等它读完再调用drawforeground 现在检查不出来是哪里出错了 高手帮忙看下
wyjblue 2014-05-16
  • 打赏
  • 举报
回复
不好跟踪,前几分钟是正常的,进来就成了return xp; aserrt 直接打断了;
passion_wu128 2014-05-16
  • 打赏
  • 举报
回复
这是系统文件报出的断言失败啊,看起来是数组越界了。建议你上位机调试状态运行,断言失败的时候就可以看到堆栈,这样就能确定是你那里的代码错了。
wyjblue 2014-05-16
  • 打赏
  • 举报
回复
怎么没人顶啊,各位大神帮忙解决哈塞

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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