QT —— QChart画柱状图

QChart:

The QChart class manages the graphical representation of the chart's series, 
legends, and axes.
QChart is a QGraphicsWidget that you can show in a QGraphicsScene. It manages the
 graphical representation of different types of series and other chart related 
class QChartView can be used instead of QChart. In addition, line, spline, area,
 and scatter series can be presented as polar charts by using the QPolarChart class.

QChart类管理图表系列、图例和轴的图形表示。
QChart是一个可以在QGraphicsScene中显示的QGraphicsWidget。
它管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示。
要简单地在布局中显示图表,可以使用便利类QChartView代替QChart。
此外,直线、样条、面积和散射级数可以通过QPolarChart类来表示为极坐标图.

使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!

pro 加入 QT += charts

并且在程序的开头加上一句 using namespace Qtcharts或者一个宏 QT_CHARTS_USE_NAMESPACE

先来了解几个部分

QBarSet:

#include <QBarSet> 
QBarSet(const QString label, QObject *parent = Q_NULLPTR)//构造

QBarSet类表示条形图中的一组条形。
一个bar集包含每个类别的一个数据值。
假设集合的第一个值属于第一个类别,
第二个属于第二个类别,依此类推。
如果集合的值小于类别的值,则假设缺失值位于集合的末尾。对于位于集合中间的缺失值,则使用0的数值。
没有显示零值集的标签。

这 竖 立 五 个 条 就 是 QBarSet:

    QBarSet *set0 = new QBarSet("Jane");
    QBarSet *set1 = new QBarSet("John");
    QBarSet *set2 = new QBarSet("Axel");
    QBarSet *set3 = new QBarSet("Mary");
    QBarSet *set4 = new QBarSet("Samantha");

    *set0 << 1 << 2 << 3 << 4 << 5 << 6;// 名字为 Jane 竖条的 6个值 (分别代表6个月的值)  <<符号表示赋值
    *set1 << 5 << 0 << 0 << 4 << 0 << 7;
    *set2 << 3 << 5 << 8 << 19<< 8 << 5;
    *set3 << 5 << 6 << 7 << 3 << 4 << 5;
    *set4 << 9 << 7 << 5 << 3 << 1 << 2;

QBarSeries:

#include <QBarSeries> 
QBarSeries(QObject *parent = Q_NULLPTR)

QBarSeries类以垂直条的形式呈现一系列数据,按类别分组。
这个类将数据绘制为一系列按类别分组的竖线,每个类别中有一个竖线添加到这个系列中。
请参阅柱状图示例,了解如何创建分组柱状图

    QBarSeries *series = new QBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->append(set3);
    series->append(set4);
//把上面5个人的 6个月的值放到 series 待会显示
//在QChart绘图中,append()的作用主要是给柱、饼、折线赋值之类(个人理解)

QBarCategoryAxis:

#include <QBarCategoryAxis> 

QBarCategoryAxis(QObject *parent = Q_NULLPTR)

QBarCategoryAxis类将类别添加到图表的轴中。
可以设置QBarCategoryAxis来显示带有标记、网格线和阴影的轴线。在刻度之间绘制类别。
它还可以与线系列一起使用,如line和BarChart示例所示。

    QStringList categories;
    categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

//QBarCategoryAxis:柱状图坐标文字描述
//QValueAxis:设置坐标轴范围

Qt 的demo:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QLegend>
#include <QtCharts/QBarCategoryAxis>

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

//![1]
    QBarSet *set0 = new QBarSet("Jane");
    QBarSet *set1 = new QBarSet("John");
    QBarSet *set2 = new QBarSet("Axel");
    QBarSet *set3 = new QBarSet("Mary");
    QBarSet *set4 = new QBarSet("Samantha");

    *set0 << 1 << 2 << 3 << 4 << 5 << 6;// Jane 6个月份的值
    *set1 << 5 << 0 << 0 << 4 << 0 << 7;
    *set2 << 3 << 5 << 8 << 19<< 8 << 5;
    *set3 << 5 << 6 << 7 << 3 << 4 << 5;
    *set4 << 9 << 7 << 5 << 3 << 1 << 2;
//![1]

//![2]
    QBarSeries *series = new QBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->append(set3);
    series->append(set4);

//![2]

//![3]
    QChart *chart = new QChart(); // 实例化QChart
    chart->addSeries(series);    //往Chart里添加series
    chart->setTitle("Simple barchart example");  //设置表格头
    chart->setAnimationOptions(QChart::SeriesAnimations);  
//![3]

//![4]
    QStringList categories;  //创建字符串List
    categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
    QBarCategoryAxis *axis = new QBarCategoryAxis();   //实例化坐标轴文字标识轴
    axis->append(categories);   //将字符串列表append到文字标识轴里
    chart->createDefaultAxes();//创建默认的坐标轴(笛卡尔坐标),一定要有这一句
    chart->setAxisX(axis, series);//设置坐标轴
//![4]

//![5]
    chart->legend()->setVisible(true); //设置图例为显示状态
    chart->legend()->setAlignment(Qt::AlignBottom);//设置图例的显示位置在底部
//![5]

//![6]
//显示容器 QChartView

    QChartView *chartView = new QChartView(chart);  //添加Chart到QChartView上
    chartView->setRenderHint(QPainter::Antialiasing);
//![6]

//![7]
    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(420, 300);
    window.show();
//![7]

    return a.exec();
}

原文链接:QT —— QChart画柱状图 -QT开发中文网

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值