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

  • 相关阅读:
    UVA 10827 Maximum sum on a torus 最大矩阵和
    UVA 11100 The Trip, 2007 水题一枚
    编程之美2015测试赛 题目1 : 同构
    UVA 10801 Lift Hopping Floyd
    UVA 11389 The Bus Driver Problem 贪心水题
    UVA 11039 Building designing 贪心
    UVA 11636 Hello World! 水题
    poj 3070 Fibonacci 矩阵快速幂
    hdu 1757 A Simple Math Problem 矩阵快速幂
    了解常见的 Azure 灾难
  • 原文地址:https://www.cnblogs.com/findumars/p/5994922.html
Copyright © 2011-2022 走看看