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();
    }
}

效果展示:

在这里插入图片描述
左侧是QListWidget。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子砰砰枪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值