QChart之QBarSeries绘制条形图

前言
  QAbstractSeries 继承自 QObject,是所有 Qt Chart series 的基类。
通常使用其特定的继承类而非基类,例如:柱状图、面积图、箱形图、饼图、线性图、曲线图、散点图。
  绘制条形图需要用到3个类
QBarSeries: 用于创建有由一系列数据组成
QChart: 图表界面,用来管理图表内容,颜色,大小等
QChartView: 负责显示QChart

mywidget.h :

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QtCharts/QChartGlobal>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtWidgets/QWidget>
#include <QtWidgets/QGraphicsWidget>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QGraphicsGridLayout>
#include <QtWidgets/QDoubleSpinBox>
#include <QtWidgets/QGroupBox>

#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QValueAxis>
#include <QtCharts/QBarCategoryAxis>

QT_CHARTS_USE_NAMESPACE

class myWidget : public QWidget
{
    Q_OBJECT

public:
    myWidget(QWidget *parent = 0);
    ~myWidget();
    QChart      *m_chart;
    QChartView  *m_chartview;
    QGridLayout *m_gridlayout;
    QBarSet *set0;
    QBarSet *set1;
    QBarSet *set2;
};

#endif // MYWIDGET_H

mywidget.cpp :

#include "mywidget.h"


myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{

    m_chart      = new QChart();
    m_chartview  = new QChartView(m_chart,this);
    m_gridlayout = new QGridLayout();
    m_gridlayout->addWidget(m_chartview,0,0,1,1);
    setLayout(m_gridlayout);

   /*添加barset*/
   //添加一组数据,每组数据有三个series
    set0 = new QBarSet("零食");   //
    set1 = new QBarSet("水果");
    set2 = new QBarSet("主食");

    /*一共显示五组数据*/
    *set0 << 158 << 685 << 458 << 260 << 354;    //向零食数据添加这5个月的销售数据
    *set1 << 350 << 725 << 602 << 523 << 458;
    *set2 << 222 << 350 << 598 << 480 << 687;

    set0->setLabelColor(QColor(0,0,255));       //设置条形数据颜色
    set1->setLabelColor(QColor(0,0,255));
    set2->setLabelColor(QColor(0,0,255));

    QBarSeries *series = new QBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->setVisible(true);
    series->setLabelsVisible(true);

    m_chart->addSeries(series);//添加系列到QChart上

    /*设置legend样式 颜色 大小 位置等*/
    m_chart->legend()->setVisible(true);  //是否允许对legend进行设置,就相当于一个总开关,只有打开了才能对legend进行操作
    m_chart->legend()->setAlignment(Qt::AlignBottom); //设置位置
    m_chart->legend()->setBackgroundVisible(true);
    m_chart->legend()->setAutoFillBackground(true);
    m_chart->legend()->setColor(QColor(222,233,251));//设置颜色
    m_chart->legend()->setLabelColor(QColor(0,100,255));//设置标签颜色
    m_chart->legend()->setMaximumHeight(50);//设置最大高度

   /*设置横纵坐标*/
    QBarCategoryAxis  *AxisX = new QBarCategoryAxis();
    QValueAxis *AxisY = new QValueAxis();

    AxisX->append("一月");
    AxisX->append("二月");
    AxisX->append("三月");
    AxisX->append("四月");
    AxisX->append("五月");
    AxisX->setLabelsColor(QColor(7,28,96));

    AxisY->setRange(0,600);

    m_chart->setAxisX(AxisX,series);
    m_chart->setAxisY(AxisY,series);
}

注意点:
1:条形图的x轴坐标设置,在曲线图或者饼状图中 我们设置x轴和y轴使用的类是QValueAxis 我们为x和y轴设置的是一个范围。我们常见的条形图的横坐标往往并不是一些数值范围,而是一些需要统计的对象名称或者是某一段时间,这时候QValueAxis就不太适合这种情况,所以我们使用了另一个派生类QBarCategoryAxis他和QValueAxis都继承于QAbstractAxisQBarCategoryAxis是可以有用户自定x轴的。
2:QBarSet的 用法,QBarSet &QBarSet::operator<<(const qreal &value)一种方便的操作符,用于将值指定的实值追加到栏集的末尾。他可以向qdebug()用法一样使用<<符号向里面追加设定值。如:*barset0 << 158 << 685 << 458 << 260 << 354;

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值