找回密码
 立即注册
收起左侧

qwt动态曲线

1
回复
7367
查看
[复制链接]
累计签到:139 天
连续签到:1 天
来源: 2016-5-27 08:41:31 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 宇仲贾 于 2016-5-27 08:45 编辑

这是我从txt文本中读取数据并想动态显示的部分程序,文本数据共三十个存入数组,每秒读十个数据,循环读取并绘图实现动态的目标,但实际却不能实现自己的目标:实际结果为曲线存在一秒后就没再显示了,但是调试发现数据一直在输出,请大神指教,感激不尽。
QFile file("F:/qwt-6.1.0/examples/refreshtest-5-26-eng-1/test.txt");   
if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )   
{        
    qDebug()<<file.errorString();   
}        
int i = 0;        
QTextStream in(&file);        
while(!in.atEnd())        
{            
    data = in.readLine();//逐行读数           
    value = data.toDouble();//数据格式转换            
    xs.append(i);            
    ys.append(value);//数据保存到数组xs,ys            
    i++;        
}        
for(int i = 0; i < 10; i++)        
{            
    x1[i = xs[i];            
    y1[i = ys[i];//取数组的前十对数据存入数组x1,y1      
}

d_curve->setSamples(x1, y1,10);//传画曲线的数据
d_clock.start();//系统时钟开启
this->startTimer(1000);//每一秒进行重画

/*文本数据共三十个,每一秒读十个,循环读取并显示,实现动态绘图*/
void Plot::timerEvent(QTimerEvent *)
{   
num = 3;   
for(int i = 0; i < num; i++)   
{        
    for(int j = 0; j < 10; j++)        
    {   
        x1[j = xs[i*10 + j];           
        y1[j = ys[i*10 + j];   
        qDebug()<<x1[j]<<y1[j];  
    }      
    if(i == num)        
    {            
        i = 0;      
    }   
}   
d_curve->setSamples(x1, y1, 10);   
replot();
}

回复

使用道具 举报

累计签到:139 天
连续签到:1 天
2016-5-27 10:05:55 显示全部楼层
问题已解决,原来是定时器函数写的有问题,现在改为
void Plot::timerEvent(QTimerEvent *)
{
    for(int j = 0; j < 10; j++)
    {
        x1[j] = j;
        y1[j] = ys[count*10 + j];
        //qDebug()<<x1[j]<<y1[j];
    }
    count++;
    //qDebug()<<count;
    num = 3;
    if(count == num)
        count = 0;
    d_curve->setSamples(x1, y1, 10);
    d_curve->attach(this);
    replot();
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了