• 4972阅读
  • 3回复

[提问]qwt动态曲线问题 [复制链接]

上一主题 下一主题
离线宇仲贾
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-27
这是我从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();
}
离线阿拉克尼

只看该作者 1楼 发表于: 2016-05-27
你好,我最近刚接触qwt,解决不了你的问题,我想麻烦问下qwt该怎样学习,直接看qwt的官方文档吗,感觉网上资料好少。谢谢
离线宇仲贾

只看该作者 2楼 发表于: 2016-05-27
问题已解决,原来是定时器函数写的有问题,现在改为
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();
}
离线宇仲贾

只看该作者 3楼 发表于: 2016-05-27
回 阿拉克尼 的帖子
阿拉克尼:你好,我最近刚接触qwt,解决不了你的问题,我想麻烦问下qwt该怎样学习,直接看qwt的官方文档吗,感觉网上资料好少。谢谢 (2016-05-27 09:41) 

看例程,消化自己需要的东西就可以了。
快速回复
限100 字节
 
上一个 下一个