qt图表二:QLineSeries

本文介绍了如何在Qt环境中使用QLineSeries和坐标轴创建曲线图表。首先创建QChart对象,然后设置QValueAxis的范围和分等份,接着创建QLineSeries并将其附加到坐标轴。通过循环添加点来绘制曲线,并设置了图例、点可见性以及图表的布局样式。最后在主窗口中显示图表,实现了动态的曲线图表效果。
摘要由CSDN通过智能技术生成

qt图标系列二
qt图表一 :splinechart
效果图:
在这里插入图片描述

接着上篇文章的代码,我想把QLineSeries加到上个图例中,新建一个类继承QChartView
思路如下:

  1. QChart *chart = new QChart(); 用于管理QLineSeries,坐标轴及图例

  2. 创建坐标轴:
    QValueAxis* mAxY = new QValueAxis();
    并设置

     mAxY->setRange(0, 10);//y轴范围
         mAxY->setTickCount(11); // Y轴分等份
         mAxY->setTitleText(QString(tr("ReadRate(%)")));//设置提示
     绑定坐标轴:
     chart->addAxis(mAxY, Qt::AlignLeft);
    
  3. 创建QLineSeries:

QLineSeries* mLineSeries = new QLineSeries();
 chart->addSeries(mLineSeries);// 将系列添加到图表
  mLineSeries->attachAxis(mAxY);//绑定坐标轴
  //添加点
   for(int i = 0 ;i < 10;i++){
     mLineSeries->append(i+1, i);
 }

具体代码如下
oneline.h

#ifndef ONELINE_H
#define ONELINE_H

#include <QtCharts/QtCharts>
QT_CHARTS_USE_NAMESPACE
#include <QWidget>


class OneLine : public QChartView
{
public:
    OneLine();
};

#endif // ONELINE_H

oneline.cpp

#include "oneline.h"
#include <QtCharts/QChartView>

QT_CHARTS_USE_NAMESPACE
OneLine::OneLine()
{
    QChart *chart  = new QChart();

    //设置坐标轴
    QValueAxis* mAxY = new QValueAxis();
    QValueAxis* mAxX = new QValueAxis();
    QLineSeries* mLineSeries = new QLineSeries();


    mAxY->setRange(0, 10);//y轴范围
    mAxY->setTickCount(11); // Y轴分等份

    mAxX->setRange(0,10);
    mAxX->setTickCount(11);

    // 将系列添加到图表
    chart->addSeries(mLineSeries);
    chart->setTheme(QtCharts::QChart::ChartThemeBrownSand);

    mAxX->setTitleText(QString(tr("ImageNumber")));
    mAxY->setTitleText(QString(tr("ReadRate(%)")));
    chart->addAxis(mAxY, Qt::AlignLeft);
    chart->addAxis(mAxX, Qt::AlignBottom);

    mLineSeries->attachAxis(mAxY);
    mLineSeries->attachAxis(mAxX);

    //隐藏背景
    chart->setBackgroundVisible(false);
    //设置外边界全部为0
    chart->setContentsMargins(0, 0, 0, 0);
    //设置内边界全部为0
    chart->setMargins(QMargins(0, 0, 0, 0));
    //设置背景区域无圆角
    chart->setBackgroundRoundness(0);

    //突出曲线上的点
    mLineSeries->setPointsVisible(true);

    //图例
    QLegend *mlegend = chart->legend();
    mLineSeries->setName("testname");
    mLineSeries->setColor(QColor(255,0,0));
    //在底部显示
    mlegend->setAlignment(Qt::AlignBottom);
    mlegend->show();

    // 将图表绑定到视图 wiget 为 QChartView
    this->setChart(chart);

    for(int i = 0 ;i < 10;i++){
        mLineSeries->append(i+1, i);
    }
}

最后在主页面代码添加

OneLine* oneline=new OneLine(); 
baseLayout->addWidget(oneline, 2, 0);

编译运行成功:
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值