Qt绘制各种图表

绘制柱状图:

void MainWindow::iniBarChart()
{ //柱状图初始化QChart *chart = new QChart(); //创建chartchart->setTitle("Barchart演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewBar->setChart(chart); //为ChartView设置chartui->chartViewBar->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildBarChart()
{ //构造柱状图QChart *chart =ui->chartViewBar->chart(); //获取ChartView关联的chartchart->removeAllSeries(); //删除所有序列chart->removeAxis(chart->axisX()); //删除坐标轴chart->removeAxis(chart->axisY()); //删除坐标轴//创建三个QBarSet数据集,从数据模型的表头获取NameQBarSet *setMath = new QBarSet(theModel->horizontalHeaderItem(colNoMath)->text());QBarSet *setChinese = new QBarSet(theModel->horizontalHeaderItem(colNoChinese)->text());QBarSet *setEnglish= new QBarSet(theModel->horizontalHeaderItem(colNoEnglish)->text());QLineSeries *Line = new QLineSeries(); //创建一个QLineSeries序列用于显示平均分Line->setName(theModel->horizontalHeaderItem(colNoAverage)->text());QPen    pen;pen.setColor(Qt::red);pen.setWidth(2);Line->setPen(pen);
//    lineseries->setPointLabelsVisible(true);
//    lineseries->setPointLabelsFormat("@yPoint");for(int i=0;i<theModel->rowCount();i++){//从数据模型获取数据setMath->append(theModel->item(i,colNoMath)->text().toInt()); //数学setChinese->append(theModel->item(i,colNoChinese)->text().toInt()); //语文setEnglish->append(theModel->item(i,colNoEnglish)->text().toInt()); //英语Line->append(QPointF(i,theModel->item(i,colNoAverage)->text().toFloat()));  //平均分}//创建一个柱状图序列 QBarSeries, 并添加三个数据集QBarSeries *series = new QBarSeries();series->append(setMath);series->append(setChinese);series->append(setEnglish);
//    series->setLabelsVisible(true);
//    series->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);// LabelsCenter
//    series->setLabelsPosition(QAbstractBarSeries::LabelsCenter);// LabelsCenter//    lineseries->setPointLabelsVisible(true);
//    lineseries->setPointLabelsFormat("@yPoint");chart->addSeries(series); //添加柱状图序列chart->addSeries(Line); //添加折线图序列//用于横坐标在字符串列表,即学生姓名QStringList categories;for (int i=0;i<theModel->rowCount();i++)categories <<theModel->item(i,colNoName)->text();//用于柱状图的坐标轴QBarCategoryAxis *axisX = new QBarCategoryAxis();axisX->append(categories); //添加横坐标文字列表
//    chart->createDefaultAxes();chart->setAxisX(axisX, series); //设置横坐标chart->setAxisX(axisX, Line);//设置横坐标axisX->setRange(categories.at(0), categories.at(categories.count()-1)); //这只坐标轴范围//数值型坐标作为纵轴QValueAxis *axisY = new QValueAxis;axisY->setRange(0, 100);axisY->setTitleText("分数");axisY->setTickCount(6);//11axisY->setLabelFormat("%.0f"); //标签格式
//    axisY->setGridLineVisible(false);
//    axisY->setMinorTickCount(4);chart->setAxisY(axisY, series); //为chart->setAxisY(axisY, Line);//    lineseries->setPointLabelsVisible(true);
//    lineseries->setPointLabelsFormat("@yPoint");chart->legend()->setVisible(true); //显示图例chart->legend()->setAlignment(Qt::AlignBottom); //图例显示在下方
}

绘制堆叠柱状图:

void MainWindow::iniStackedBar()
{//初始化叠加柱状图绘制窗口QChart *chart = new QChart();chart->setTitle("StackedBar 演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewStackedBar->setChart(chart);ui->chartViewStackedBar->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildStackedBar()
{//绘制叠加柱状图QChart *chart =ui->chartViewStackedBar->chart(); //获取QChart对象chart->removeAllSeries();//删除所有序列chart->removeAxis(chart->axisX()); //删除坐标轴chart->removeAxis(chart->axisY());//创建三门课程的数据集QBarSet *setMath = new QBarSet(theModel->horizontalHeaderItem(colNoMath)->text());QBarSet *setChinese = new QBarSet(theModel->horizontalHeaderItem(colNoChinese)->text());QBarSet *setEnglish= new QBarSet(theModel->horizontalHeaderItem(colNoEnglish)->text());for(int i=0;i<theModel->rowCount();i++){ //添加分数数据到数据集setMath->append(theModel->item(i,colNoMath)->text().toInt());setChinese->append(theModel->item(i,colNoChinese)->text().toInt());setEnglish->append(theModel->item(i,colNoEnglish)->text().toInt());}//创建   QStackedBarSeries对象并添加数据集QStackedBarSeries *series = new QStackedBarSeries();series->append(setMath);series->append(setChinese);series->append(setEnglish);series->setLabelsVisible(true);//显示每段的标签
//    series->setLabelsPosition(QAbstractBarSeries::LabelsCenter);// LabelsCenterchart->addSeries(series); //添加序列到图表QStringList categories;for (int i=0;i<theModel->rowCount();i++)categories <<theModel->item(i,colNoName)->text();QBarCategoryAxis *axisX = new QBarCategoryAxis(); //类别坐标轴,作为横轴axisX->append(categories);chart->setAxisX(axisX, series);axisX->setRange(categories.at(0), categories.at(categories.count()-1));QValueAxis *axisY = new QValueAxis; //数值坐标轴,作为纵轴axisY->setRange(0, 300);axisY->setTitleText("总分");axisY->setTickCount(6);axisY->setLabelFormat("%.0f"); //标签格式chart->setAxisY(axisY, series);chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignBottom);
}

绘制百分比柱状图:

void MainWindow::iniPercentBar()
{//百分比柱状图初始化QChart *chart = new QChart();chart->setTitle("PercentBar 演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewPercentBar->setChart(chart);ui->chartViewPercentBar->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildPercentBar()
{//绘制百分比柱状图QChart *chart =ui->chartViewPercentBar->chart();chart->removeAllSeries();chart->removeAxis(chart->axisX());chart->removeAxis(chart->axisY());//创建数据集QBarSet *setMath = new QBarSet(theModel->horizontalHeaderItem(colNoMath)->text());QBarSet *setChinese = new QBarSet(theModel->horizontalHeaderItem(colNoChinese)->text());QBarSet *setEnglish= new QBarSet(theModel->horizontalHeaderItem(colNoEnglish)->text());QTreeWidgetItem *item; //节点QStringList categories;for (int i=0;i<=4;i++){//从分数段统计数据表里获取数据,添加到数据集item=ui->treeWidget->topLevelItem(i);categories<<item->text(0);//用作横坐标的标签setMath->append(item->text(colNoMath).toFloat());setChinese->append(item->text(colNoChinese).toFloat());setEnglish->append(item->text(colNoEnglish).toFloat());}QPercentBarSeries *series = new QPercentBarSeries(); //序列series->append(setMath);series->append(setChinese);series->append(setEnglish);series->setLabelsVisible(true);//显示百分比
//    series->setLabelsFormat("@value人");chart->addSeries(series);QBarCategoryAxis *axisX = new QBarCategoryAxis(); //横坐标axisX->append(categories);chart->setAxisX(axisX, series);axisX->setRange(categories.at(0), categories.at(categories.count()-1));QValueAxis *axisY = new QValueAxis;//纵坐标axisY->setRange(0, 100);axisY->setTitleText("百分比");axisY->setTickCount(6);axisY->setLabelFormat("%.1f"); //标签格式chart->setAxisY(axisY, series);chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignRight); //AlignBottom
}

绘制散点图:

void MainWindow::iniScatterChart()
{//散点图初始化QChart *chart = new QChart();chart->setTitle("QScatterSeries 和 QSplineSeries 演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewScatter->setChart(chart);ui->chartViewScatter->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildScatterChart()
{ //绘制 QScatterSeries和QSplineSeries图QChart *chart =ui->chartViewScatter->chart();chart->removeAllSeries();chart->removeAxis(chart->axisX());chart->removeAxis(chart->axisY());QSplineSeries *seriesLine = new QSplineSeries(); //光滑曲线序列seriesLine->setName("spline");QPen pen;pen.setColor(Qt::blue);pen.setWidth(2);
//    seriesLine->setColor(Qt::blue);seriesLine->setPen(pen);QScatterSeries *series0 = new QScatterSeries(); //散点序列series0->setName("散点");series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);//MarkerShapeRectangle,MarkerShapeCircleseries0->setBorderColor(Qt::black);series0->setBrush(QBrush(Qt::red));series0->setMarkerSize(12);qsrand(QTime::currentTime().second());//随机数种子for (int i=0;i<10;i++){int x=(qrand() % 20);//0到20之间的随机数int y=(qrand() % 20);series0->append(x,y); //散点序列seriesLine->append(x,y); //光滑曲线序列}chart->addSeries(series0);chart->addSeries(seriesLine);//    QValueAxis *axisY = new QValueAxis;
//    axisY->setRange(0, 20);
//    axisY->setTitleText("Y");
//    axisY->setTickCount(11);
//    axisY->setLabelFormat("%.0f"); //标签格式
//    axisY->setGridLineVisible(true);
//    chart->setAxisY(axisY, series0);
//    chart->setAxisY(axisY, seriesLine);//    QValueAxis *axisX = new QValueAxis;
//    axisX->setRange(0, 20);
//    axisX->setTitleText("X");
//    axisX->setTickCount(11);
//    axisX->setLabelFormat("%.0f"); //标签格式
//    axisX->setGridLineVisible(true);
//    chart->setAxisX(axisX, series0);
//    chart->setAxisX(axisX, seriesLine);chart->createDefaultAxes(); //创建缺省的坐标轴chart->axisX()->setTitleText("X 轴");chart->axisX()->setRange(-2,22);chart->axisY()->setTitleText("Y 轴");chart->axisY()->setRange(-2,22);chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignRight); //AlignBottomforeach (QLegendMarker* marker, chart->legend()->markers()) {QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_chartBarLegendMarkerClicked()));QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_chartBarLegendMarkerClicked()));}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之模版方法(TemplateMethod)

模版方法 钩子函数 回调函数 在父类里面有一个模版方法&#xff0c;在这个方法里面调用了op1&#xff0c;op2&#xff0c;op3… 在子类里面如果想要改变父类的op1和op2 只需要重写op1和op2&#xff0c;那么这个重写之后的方法&#xff0c;可以在父类里面直接调用的到 例子: J…

Postman小白安装和注册入门教程

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 一&#xff09;安装 访问官网https://www.getpostman.com/downloads/&#xff0c;直接下载安装。 二&#xff09;注册和登录…

【C/C++底层】内存分配:栈区(Stack)与堆区(Heap)

/*** poject * author jUicE_g2R(qq:3406291309)* file 底层内存分配&#xff1a;栈区(Stack)与堆区(Heap)* * language C/C* EDA Base on MVS2022* editor Obsidian&#xff08;黑曜石笔记软件&#xff09;* * copyright 2023* COPYRIGHT …

千万富翁分享:消费多少免单多少,电商运营高手实战秘籍拆解

千万富翁分享&#xff1a;消费多少免单多少&#xff0c;电商运营高手实战秘籍拆解 后疫情时代&#xff0c;国内电商圈层进程依然是在高速发展阶段&#xff0c;今年2023年双十一也彻底落下帷幕&#xff0c;但这次相较于往常却没有公布具体的成交规模数据&#xff0c;那么&#x…

国产双核DSP与 TI 的TMS320F28377 大PK

国产DSP&#xff0c;QX320F28377与 TI的 TMS320F28377 孰强孰弱

Redis的特性以及使用场景

分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK 介绍redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个基于客户端-服务器架构的在内存中存储数据的中间件&#xff0c;属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。 作为一种内存数…

FreeSwitch安装视频

文章目录 序言Centos7安装FreeSwitch-1.6 序言 学习资料来源《FreeSWITCH权威指南》-作者杜金房这本书。我是2022年6月毕业的&#xff0c;偶然的机会接触到FreeSWITCH&#xff0c;FreeSWITCH纯属个人爱好&#xff0c;进行笔记整理。也一直希望有机会可以参与FreeSWITCH相关工作…

思维导图软件 Xmind mac中文版软件特点

XMind mac是一款思维导图软件&#xff0c;可以帮助用户创建各种类型的思维导图和概念图。 XMind mac软件特点 - 多样化的导图类型&#xff1a;XMind提供了多种类型的导图&#xff0c;如鱼骨图、树形图、机构图等&#xff0c;可以满足不同用户的需求。 - 强大的功能和工具&#…

Vue3-admin-template 框架修改登录页面

一. 修改views/login/comp/LoginForm.vue文件里面的内容 const state reactive({ruleForm: {account: admin,password: 123456,},loading: false,checkedPwd: false,redirect: undefined,rules: {account: [{ required: true, message: t(login.rules.account), trigger: bl…

C++学习---信号处理机制、中断、异步环境

文章目录 前言信号处理signal()函数关于异步环境 信号处理函数示例raise()函数 前言 信号处理 关于信号&#xff0c;信号是一种进程间通信的机制&#xff0c;用于在程序执行过程中通知进程发生了一些事件。在Unix和类Unix系统中&#xff0c;信号是一种异步通知机制&#xff0c…

Kibana使用Watcher监控服务日志并发送飞书报警(Markdown)

Watcher是什么 Kibana Watcher 是 Elasticsearch 的监控和告警工具&#xff0c;它允许你设置和管理告警规则以监控 Elasticsearch 数据和集群的状态。Kibana Watcher 可以监测各种指标和数据&#xff0c;然后在满足特定条件时触发警报。它提供了一种强大的方式来实时监控 Elas…

​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型

内容来源&#xff1a;xiaohuggg Distil-Whisper&#xff1a;比Whisper快6倍&#xff0c;体积小50%的语音识别模型 ​该模型是由Hugging Face团队开发&#xff0c;它在Whisper核心功能的基础上进行了优化和简化&#xff0c;体积缩小了50%。速度提高了6倍。并且在分布外评估集上…

Kotlin学习之2

比较引用 比较值 集合类型 不可变List&#xff1a;List<T> 可变List&#xff1a;MutableList<T> 不可变Map&#xff1a;Map<K,V> 可变Map&#xff1a;MutableMap<K,V> 不可变Set&#xff1a;Set<T> 可变Set&#xff1a;MutableSet<T&…

【Qt之QWizard】使用1

QWizard使用 描述方法枚举&#xff1a;enum QWizard::WizardButton枚举&#xff1a;enum QWizard::WizardOption枚举&#xff1a;enum QWizard::WizardStyle枚举&#xff1a;enum QWizard::WizardPixmap常用成员方法槽函数信号 示例设置标题添加page页设置按钮文本设置自定义按…

Windows配置IP-SAN(iSCSI)

之前写了《Linux配置IP-SAN&#xff08;iSCSI&#xff09;》&#xff0c;现在简单记录Windows配置IP-SAN&#xff08;iSCSI&#xff09;&#xff0c;基本过程都是一样的。一些原理请参考《Linux配置IP-SAN&#xff08;iSCSI&#xff09;》&#xff0c;更详细一些。 目录 一、确…

Windows conan环境搭建

Windows conan环境搭建 1 安装conan1.1 安装依赖软件1.1.1 python安装1.1.2 git bash安装1.1.3 安装Visual Studio Community 20191.1.3.1 选择安装的组件1.1.3.2 选择要支持的工具以及对应的SDK 1.1.4 vscode安装 1.3 验证conan功能1.4 查看conancenter是否包含poco包1.5 查看…

20231114_python练习_b站番剧视频爬取音频组合

import requests import json import re import os from pprint import pprint from moviepy.editor import *url https://api.bilibili.com/pgc/view/web/season?ep_id322903 #设置请求头 header{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) A…

Unity解决:没有UnityWebRequest.Result

当我在Unity 2019中使用Unity 2021的代码satable时。 控制台显示 “UnityWebRequest”不包含“result”的定义,并且找不到接受“UnityWebRequest”类型的第一个参数的可访问扩展方法“result”(是否缺少using指令或程序集引用?) 漏洞/问题: if (req.result == UnityWebRe…

面试官问 Spring AOP 中两种代理模式的区别?很多面试者被问懵了

面试官问 Spring AOP 中两种代理模式的区别?很多初学者栽了跟头&#xff0c;快来一起学习吧&#xff01; 代理模式是一种结构性设计模式。为对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象&#xff0c;并允许在将请求提交给对象前后进行一…

服务器中了locked勒索病毒怎么处理,locked勒索病毒解密,数据恢复

近几年&#xff0c;网络应用技术得到了迅速发展&#xff0c;越来越多的企业开始走向数字化办公&#xff0c;极大地为企业的生产运营提供了帮助&#xff0c;但是网络技术的发展也为网络安全埋下隐患。最近&#xff0c;locked勒索病毒非常嚣张&#xff0c;几乎是每隔两个月就会对…