热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QTQChart画柱状图

TheQChartclassmanagesthegraphicalrepresentationofthechartsseries,legends,andaxes.QChartisa
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(const QString label, QObject *parent = Q_NULLPTR)//构造

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

QT -- QChart画柱状图

 这 竖 立 五 个 条 就 是 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(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(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 -- QChart画柱状图

Qt 的demo:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

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

如果数据量大(百万数据不卡顿)并且交互多的话 推荐使用QCustomplot


推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细解析了 Yii2 框架中视图和布局的各种函数,并综述了它们在实际开发中的应用场景。通过深入探讨每个函数的功能和用法,为开发者提供了全面的参考,帮助他们在项目中更高效地利用这些工具。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 本次发布的Qt音乐播放器2.0版本在用户界面方面进行了细致优化,提升了整体的视觉效果和用户体验。尽管核心功能与1.0版本保持一致,但界面的改进使得操作更加直观便捷,为用户带来了更为流畅的使用体验。此外,我们还对部分细节进行了微调,以确保软件的稳定性和性能得到进一步提升。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • poj 3352 Road Construction ... [详细]
author-avatar
摇身一变鄙人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有