Qt例子学习笔记 - Examples/Qt-6.2.0/charts/barchart

2024-04-13 14:48

本文主要是介绍Qt例子学习笔记 - Examples/Qt-6.2.0/charts/barchart,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//创建条形图
//条形图在所有条形图中的使用方式相同。
//为了说明各种条形图之间的差异
//我们在示例中使用了相同的数据。
//条形图可视化的数据由 QBarSet 实例定义。
//在这里,我们创建集合并将数据附加到它们。
//数据在此处附加了 << 运算符。
//或者,可以使用 append 方法。

    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;*set1 << 5 << 0 << 0 << 4 << 0 <<7;*set2 << 3 << 5 << 8 << 13 << 4 <<5;*set3 << 5 << 6 << 7 << 3 << 4 << 5;*set4 << 9 << 7 << 5 << 3 << 1 << 2;

//我们创建系列并将条形集附加到它。
//该系列拥有 barsets 的所有权。
//该系列将数据从集合分组到类别。
//每组的第一个值按第一类第二个值分组到第二类,依此类推。

    QBarSeries *series = new QBarSeries();series->append(set0);series->append(set1);series->append(set2);series->append(set3);series->append(set4);

//在这里,我们创建图表对象并向其添加系列。
//我们使用 setTitle 设置图表的标题,然后通过调用
//setAnimationOptions(QChart::SeriesAnimations) 打开系列的动画

    QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("Simple barchart example");chart->setAnimationOptions(QChart::SeriesAnimations);

//要在轴上显示类别,我们需要为此创建一个 QBarCategoryAxis。
//在这里,我们创建一个带有类别列表的类别轴,
//并将其设置为与底部对齐
//充当 x 轴,并将其附加到系列中。
//图表拥有轴的所有权。
//对于 y 轴,我们使用与左侧对齐的值轴。

    QStringList categories;categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";QBarCategoryAxis *axisX = new QBarCategoryAxis();   axisX->append(categories);chart->addAxis(axisX,Qt::AlignBottom);series->attachAxis(axisX);  

//我们也想展示 legend。为此,我们从图表中获取图例指针并将其设置为可见。
//我们还通过将其对齐设置为 Qt::AlignBottom 将图例放置在图表的底部。

    chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignBottom);

//最后,我们将图表添加到视图中。
//我们还为图表视图打开了抗锯齿功能。

    QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);

//图表已准备好显示。
//我们将图表设置为窗口的中央小部件。
//我们还设置图表窗口的大小并显示它。

    QMainWindow window;window.setCentralWidget(chartView);window.resize(420,300);window.show();
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QLegend>
#include <QtCharts/QBarCategoryAxis>
#include <QtCharts/QValueAxis>QT_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);//条形集包含每个类别的一个数据值。//假设集合的第一个值属于第一个类别,第二个值属于第二个类别,依此类推。//如果集合的值少于类别数,则假定缺失值位于集合的末尾。//对于集合中间的缺失值,使用数值为零。//零值集的标签未显示。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;*set1 << 5 << 0 << 0 << 4 << 0 << 7;*set2 << 3 << 5 << 8 << 13 << 8 << 5;*set3 << 5 << 6 << 7 << 3 << 4 << 5;*set4 << 9 << 7 << 5 << 3 << 1 << 2;//此类将数据绘制为一系列按类别分组的垂直条形//每个条形集中的每个类别一个条形添加到该系列中。//bool QAbstractBarSeries::append(QBarSet *set)//将 set 指定的一组条添加到条系列并取得它的所有权。//如果 set 为 null 或它已经属于该系列,则不会追加。//如果附加成功,则返回 true。QBarSeries *series = new QBarSeries();series->append(set0);series->append(set1);series->append(set2);series->append(set3);series->append(set4);//QChart 是一个 QGraphicsWidget,您可以在 QGraphicsScene 中显示它。//它管理不同类型系列和其他图表相关对象(如图例和轴)的图形表示。//为了简单地在布局中显示图表,可以使用便利类 QChartView 代替 QChart。//此外,可以使用 QPolarChart 类将折线、样条曲线、面积和散点序列显示为极坐标图。//QGraphicsWidget 类是 QGraphicsScene 中所有小部件项的基类     QChart *chart = new QChart();//void QChart::addSeries(QAbstractSeries *series)//将系列系列添加到图表并取得它的所有权。//注意:默认情况下,新添加的系列不附加到任何轴,//即使是在将系列添加到图表之前使用 createDefaultAxes() 为图表创建的系列也不例外。//如果在显示图表之前没有轴附加到新添加的系列,则该系列将被绘制,//就好像它的轴的范围完全适合该系列到图表的绘图区域。//如果同一图表还显示具有正确附加轴的其他系列,//这可能会令人困惑,因此请始终确保在添加系列后调用 createDefaultAxes() 或为系列显式附加轴。chart->addSeries(series);chart->setTitle("Simple barchart example");//此属性保存图表的动画选项。//根据此设置启用或禁用动画。//图表中启用了系列动画。chart->setAnimationOptions(QChart::SeriesAnimations);QStringList categories;categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";//QBarCategoryAxis 可以设置为显示带有刻度线//网格线和阴影的轴线。//类别绘制在刻度之间。//它也可以与线系列一起使用,如 Line 和 BarChart 示例所示。//以下代码说明了如何使用 QBarCategoryAxis:/*QChartView *chartView = new QChartView;QBarSeries *series = new QBarSeries;//...chartView->chart()->addSeries(series);chartView->chart()->createDefaultAxes();QBarCategoryAxis *axisX = new QBarCategoryAxis;QStringList categories;categories<<"Jan"<<"Feb"<<"Mar"<<"Apr"<<"May"<<"Jun";axisX->append(categories);axisX->setRange("Feb","May");chartView->chart()->setAxisX(axisX,series);*/QBarCategoryAxis *axisX = new QBarCategoryAxis();//void QBarCategoryAxis::append(const QStringList &categories)//将类别附加到轴。//轴上的最大值将更改为匹配最后一个类别。//如果之前未定义类别,则轴上的最小值也将更改以匹配类别。//类别必须是有效的 QString 并且不能重复。//不会附加重复的类别。axisX->append(categories);//void QChart::addAxis(QAbstractAxis *axis, Qt::Alignment alignment)//将轴轴添加到由alignment指定对齐的图表。图表拥有轴的所有权。chart->addAxis(axisX, Qt::AlignBottom);//bool QAbstractSeries::attachAxis(QAbstractAxis *axis)//将轴指定的轴附加到系列。//如果轴连接成功,则返回 true,否则返回 false。series->attachAxis(axisX);//可以设置值轴以显示带有刻度线、//网格线和阴影的轴线。 轴上的值绘制在刻度线的位置。//以下示例代码说明了如何使用 QValueAxis 类/*QCharView *chartView = new QChartView;QLineSeries *series = new QLineSeries;//...chartView->chart()->addSeries(series);QValueAxis *axisX = new QValueAxis;axisX->setRange(10,20.5);axisX->setTickCount(10);axisX->setLabelFormat("%.2f");chartView->chart()->setAxisX(axisX,series); *///void QValueAxis::setRange(qreal min, qreal max)//设置轴上从最小值到最大值的范围。//如果 min 大于 max,则此函数返回而不做任何更改。//setTickCount//此属性保存轴上的刻度线数。 这表示在图表上绘制了多少条网格线。//默认值为 5,数量不能小于 2。//setLabelFormat//此属性保存轴的标签格式。//setAxisX(AbstractAxis axis, AbstractSeries series)//将系列的 x 轴设置为轴。QValueAxis *axisY = new QValueAxis();axisY->setRange(0,15);chart->addAxis(axisY, Qt::AlignLeft);series->attachAxis(axisY);//QLegend *QChart::legend() const//返回图表的图例对象。 所有权保留在图表中。//图例是显示图表图例的图形对象。//当系列更改时,图例状态由 QChart 更新。//默认情况下,图例附加到图表//但可以分离以使其独立于图表布局。//无法创建或删除图例对象//但可以通过 QChart 类引用它们。chart->legend()->setVisible(true);//图例如何与图表对齐。chart->legend()->setAlignment(Qt::AlignBottom);//图表视图不需要 QGraphicsScene 对象即可工作。//要在现有 QGraphicsScene 中显示图表//应改用 QChart 或 QPolarChart 类。QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);QMainWindow window;window.setCentralWidget(chartView);window.resize(420, 300);window.show();return a.exec();
}

在这里插入图片描述

这篇关于Qt例子学习笔记 - Examples/Qt-6.2.0/charts/barchart的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900439

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Qt实现文件的压缩和解压缩操作

《Qt实现文件的压缩和解压缩操作》这篇文章主要为大家详细介绍了如何使用Qt库中的QZipReader和QZipWriter实现文件的压缩和解压缩功能,文中的示例代码简洁易懂,需要的可以参考一下... 目录一、实现方式二、具体步骤1、在.pro文件中添加模块gui-private2、通过QObject方式创建

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;