Qt的Q-Chart作图其实有时候(是我们想的太多)

实际上在Qt上绘制线图(数据),原理很简单,控件搭配也挺宜用(Q-Chart-View、Q-Chart、Q-Line-Series),附加额外的坐标、布局、颜色、背景等

QChart* chart_;
QChartView* view_;
QSplineSeries *seris;
QGridLayout* baseLayout;
QValueAxis *xAxis;
QValueAxis *yAxis;

层层嵌套,主要考虑的是的是数据的填充、坐标轴实时适应、选定区域放大,当然,也是最基本的操作

CHART-VIEW支持选定区域放大属性,而且是一句代码实现,当然,限制就是具备特定的操作,不是想怎么办就怎么办

view_->setRubberBand(QChartView::HorizontalRubberBand);

数据填充其实不需要事先设定数据量,因为SERIES本身是个容器动态扩展的(数据结构),直接附加就行,再一次显示时,先清除容器,再添加、显示即可

for(int i=0;i<nfft/2;i++)
{
    seris->append(ret.x[i],ret.y[i]);
}
seris->clear();

坐标轴实时更新(伴随数据操作,目的是显示更加的直观),这个也是一行代码解决,利用坐标轴的属性

xAxis->setRange(min_x,max_x);
yAxis->setRange(min_y,max_y);
double min_x,max_x;
double min_y,max_y;
min_x = max_x = ret.x[0];
min_y = max_y = ret.y[0];

for(int i=0;i<fs;i++)
{
    //separate for x
    if(min_x>ret.x[i])
    {
        min_x = ret.x[i];
    }
    if(max_x<ret.x[i])
    {
        max_x = ret.x[i];
    }

    //separate for y
    if(min_y>ret.y[i])
    {
        min_y = ret.y[i];
    }
    if(max_y<ret.y[i])
    {
        max_y = ret.y[i];
    }
}

https://faststone-image-viewer.en.softonic.com/

Fast-Stone Image Viewer很强大,功能还需要自己体会体会!

https://github.com/zuotiansang/C-learning

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


皖ICP备2021003932号
召唤伊斯特瓦尔