资讯详情

Qt图表绘制(QtCharts)-绘制简单的条形图(4)

Qt图表绘制(QtCharts)-画简单的条形图(4)

文章目录

  • Qt图表绘制(QtCharts)-画简单的条形图(4)
    • 1、概述??
    • 2.实现步骤
    • 3.主要使用类别
    • 4.主代码
    • 5.实现效果
    • 6、源代码??

更精彩的内容
??个人内容分类汇总 ??
注:我用的QtCharts是基于Qt 5.12.12版本

1、概述??

Qt Charts 该模块提供了一为中心的用户界面提供了一组易于使用的图表组件。

它使用 Qt Graphics View 因此,图表可以很容易地集成到现代用户界面中。

Qt Charts 可以用作 QWidgets、QGraphicsWidget 或 QML 类型。 用户可以通过选择图表主题之一轻松创建令人印象深刻的图表。

???

  • initChart()如何使用函数?QtCharts绘制简单的条形图;
  • 详细的注释和注意事项包含在源码中 ;
  • 将UI与代码分离,使实现图表绘制的代码更加简更加简。

2.实现步骤

  1. 打开.pro文件,输入Qt = charts,引入Qt Charts模块;

    在这里插入图片描述

  2. 打开ui选择一个设计器Graphics View鼠标右键控件

  3. 输入QChartView,点击添加、提升;

  4. 您可以在窗口右上角看到控制类型QChartView然后将控件命名为chartView; 注意:由于QChartView需要引入命名空间,所以在这里提升后编译不通过。

  5. 添加代码;一般我们最好在cpp文件尽量避免添加头文件和引入命名空间.h文件在这里引入(为了方便,简洁的代码直接在头文件中引入命名空间)cpp文件中引入命名空间需要在ui_widget.h文件前,否则,由于编译失败,编译将失败ui将在文件中使用QChartView类。

    #include <QtCharts> // 导入QtCharts所有的头文件也可以单独导入某个文件  // 引入qchart命名空间(注:ui中提升为QChartView, // 则QT_CHARTS_USE_NAMESPACE一定要放##include "ui_widget.h"否则编译会失败) QT_CHARTS_USE_NAMESPACE 

3.主要使用类别

类名 作用
QBarSet QBarSet 类表示条形图中的一组条形
QBarSeries 将一系列数据显示为按类别分组的垂直条形图
QBarCategoryAxis 将类别添加到图表别。
QValueAxis 将数值添加到图表的轴中

4.主代码

  • widget.cpp调用结构函数initChart()函数;
/** * @brief 条形图初始化绘制 */ void Widget::initChart() { 
             // QBarSet 类表示条形图中的一组条形     QBarSet* set0 = new QBarSet("C ");     QBarSet* set1 = new QBarSet("java");     QBarSet* set2 = new QBarSet("python");     QBarSet* set3 = new QBarSet("html");
    QBarSet* set4 = new QBarSet("css");

    // 为每一个条形添加数据
    *set0 << 1 << 2 << 3 << 4 << 5 << 6;
    *set1 << 5 << 0 << 0 << 4 << 0 << 7;
    *set2 << 4 << 5 << 8 << 13 << 8 << 5;
    *set3 << 5 << 6 << 7 << 3 << 4 << 5;
    *set4 << 9 << 7 << 5 << 3 << 1 << 2;

    // QBarSeries 类将一系列数据显示为按类别分组的垂直条。
    QBarSeries* series = new QBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->append(set3);
    series->append(set4);

    // QChart 类管理图表系列(series)、图例(legends)和轴(axes)。
    QChart* chart = ui->chartView->chart();                // 获取QChartView自带的chart
    chart->addSeries(series);                              // 将创建好的条形图series添加进chart中
    chart->setTitle("关于学习编程时间的条形图");               // 设置标题
    chart->setAnimationOptions(QChart::SeriesAnimations);  // 设置图表变化时的动画效果

    QStringList categories;                                // X轴分类,一般与QBarSet中添加的数据个数相同,如果少了则会显示不全,多了不影响,但是不能重复
    categories << "星期一" << "星期二"  << "星期三"
               << "星期四"  << "星期五"  << "星期六" << "星期天";  // 星期天当然是休息了...
    QBarCategoryAxis* axisX = new QBarCategoryAxis();      // QBarCategoryAxis类向图表的轴添加类别。
    axisX->setTitleText("X轴名称是:星期几");                // 设置X轴标题
    axisX->append(categories);
    chart->addAxis(axisX, Qt::AlignBottom);                // 将X轴放在图表的底部
    series->attachAxis(axisX);                             // 将axis指定的轴附着到series。

    QValueAxis* axisY = new QValueAxis();     // 创建Y轴
    axisY->setRange(0, 24);                   // 设置Y轴范围(学习啊,当然是24小时喽)
    axisY->setTitleText("Y轴当然是:学习时间");  // 设置Y轴标题
    chart->addAxis(axisY, Qt::AlignLeft);     // Y轴左对齐
    series->attachAxis(axisY);

    chart->legend()->setVisible(true);             // 设置图例是否可见(默认是可见的)
    chart->legend()->setAlignment(Qt::AlignRight); // 设置图例显示的位置

    ui->chartView->setRenderHint(QPainter::Antialiasing);  // 设置抗锯齿(不过在条形图中不设置也没关系)
}

5、实现效果🙉

6、源代码🤖

gitee github

😮‍💨😮‍💨😮‍💨😮‍💨😮‍💨😮‍💨😮‍💨😮‍💨

标签: 5080条形连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台