C++Qt开发-QChart绘制折线图

步骤

1.创建图标
2.添加数据

头文件的私有类成员

    QLineSeries *curSeries = new QLineSeries();//当前序列,存储坐标点,Pari类型的数据,便于一起插入点坐标
    QValueAxis *curAxis;//当前坐标轴,设置坐标轴的一些信息。
    queue< pair<int,int> > series_queue;//从队列获取数据

创建图标

1.提升QChartView

画图要有纸笔,这个QChartView就是充当了纸的角色,但是在ui界面里面,没有这个类,我们的做法是将GraphicsView提升为QChartView,提升方式可以在ui界面里右键提升。

2.创建图标

创建一个QChart,并将它放在QChartView这张纸上,在创建坐标轴,并将坐标轴放在QChart上,一点点设置QChart。

void MainWindow::createChart()
{
    QChart *chart = new QChart();
    chart->setTitle("算法分析");
    curSeries->setName("算法分析折线");
    chart->addSeries(curSeries);

    ui->chartView->setChart(chart);
    //ui->chartView->setRenderHint(QPainter::Antialiasing);//参数代表尽可能的消除基本体边缘的锯齿

    QPen pen;
    //pen.setStyle();
    pen.setWidth(2);
    pen.setColor(Qt::red);
    curSeries->setPen(pen);

    QValueAxis *axisx = new QValueAxis();
    curAxis = axisx;//当前坐标轴
    axisx->setRange(0, ui->lineEdit_max->text().toInt());//坐标轴范围
    axisx->setLabelFormat("%d");//设置坐标格式
    axisx->setTickCount(2001);//设置分割数
    axisx->setTitleText("值");//设置标题

    QValueAxis *axisy = new QValueAxis();
    axisy->setRange(0,200);
    axisy->setLabelFormat("%d");
    axisy->setTickCount(201);
    axisy->setTitleText("次数");

    chart->setAxisX(axisx,curSeries);//设置x轴
    chart->setAxisY(axisy,curSeries);//设置y轴

}

添加数据

添加数据是用QLineSeries类,表示序列,笔者是在队列里添加数据,这切合自己的实际问题,在C++编程规范中明确指出,在没有特殊需求时,应使用vector。

笔者的queue队列保存的是pair类型,是典型的坐标类型。

void MainWindow::prepareData()
{
    curSeries->clear();//先清除
    while( series_queue.empty() != true)
    {
        curSeries->append(series_queue.front().first,series_queue.front().second);
        series_queue.pop();
    }
}

效果展示:

C++Qt开发-QChart绘制折线图_第1张图片
左侧是QListWidget。

你可能感兴趣的:(Qt,qt,c++)