zoukankan      html  css  js  c++  java
  • qt外部数据传入实现动态的折线图绘制

                   在嵌入式开发中,实现数据收集与显示很常见,对于希望数据稳定的应用来说,
                   折现图的表现形式很符合条件。
                   本实现是通过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++;
            }
    
    
    
    
    最后来张效果图
    
    

    http://blog.csdn.net/zhx6044/article/details/7674924

  • 相关阅读:
    网络通信socket连接数上限
    图像轮廓的提取
    C# 基础类型的快速转换
    十大编程算法助程序员走上高手之路
    椭圆的曲线模拟
    覆盖父类方法的new和override关键字
    BackgroundWorker异步更新界面
    小程序开发(七)利用SQL实现access_token的自动通知
    漫水填充(泛洪填充、油漆桶)的C#实现(解决堆溢出问题)
    SQL中获取最近的N个半年度
  • 原文地址:https://www.cnblogs.com/findumars/p/5994922.html
Copyright © 2011-2022 走看看