qt外部数据传入实现动态的折线图绘制

53 篇文章 36 订阅

               在嵌入式开发中,实现数据收集与显示很常见,对于希望数据稳定的应用来说,
               折现图的表现形式很符合条件。
               本实现是通过qt的signal-slot来实现折线图的动态显示,一个信号的到来,数据添加,然后重绘
               
          这是其中使用到的一些数据结构

    QList<qreal> xList;//x轴数据链
    QList<qreal> yDrawList;//的y轴数据链
    QList<qreal> yWaList;//WA的y轴数据链
    QList<qreal> yWbList;//WB的x轴数据链
    int Counter;//记录3条折线的第几个点


    //我画了三条折线
    //下面是实现

    //节点数据的添加
    
void lineChart::dataInput(int i, int j, int k)//接受数据到达的信号
{
    int xsize=xList.size();
    if(xsize==21)//测试20个x轴坐标刷新一次图想,
    {
        xList.clear();
        xsize=xList.size();
    }
    if(xsize>=1)
        {
            xList.insert(xsize,xsize*2);
            yDrawList.insert(xsize,i);
            yWaList.insert(xsize,j);
            yWbList.insert(xsize,k);
            emit pointOver();//重绘信号
        }
        else{
        xList.insert(xsize,xsize*2);
        yDrawList.insert(xsize,i);
        yWaList.insert(xsize,j);
        yWbList.insert(xsize,k);
}
}

//折线绘制函数
   
  while(Counter < (xList.size()-1))
        {
        painter.setPen(pen);
        painter.drawLine(2*xList.value(Counter)+25,205-yDrawList.value(Counter)*2,
                         2*xList.value(Counter+1)+25,205-yDrawList.value(Counter+1)*2);
        Counter++;
        }
        Counter=0;
        while(Counter < (xList.size()-1))
        {
        painter.setPen(pen1);
        painter.drawLine(xList.value(Counter)*2+25,205-yWaList.value(Counter)*2,
                         xList.value(Counter+1)*2+25,205-yWaList.value(Counter+1)*2);
        Counter++;
        }
        Counter=0;
        while(Counter < (xList.size()-1))
        {
        painter.setPen(pen2);
        painter.drawLine(xList.value(Counter)*2+25,205-yWbList.value(Counter)*2,
                         25+xList.value(Counter+1)*2,205-yWbList.value(Counter+1)*2);
        Counter++;
        }




最后来张效果图


  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值