C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示
对上一篇的工作C++学习笔记 | 基于Qt框架开发实时成绩显示排序系统1-CSDN博客继续优化,增加一个显示运动员每组成绩的折线图。


1)在Qt Creator的项目文件(.pro文件)中添加对Qt Charts模块的支持:
QT += charts
2)在 AthleteModel.h 中添加
public:// 获取所有运动员的列表std::vector<Athlete> getAthletes() const;

3)在athletemodel.cpp的最后添加
std::vector<Athlete> AthleteModel::getAthletes() const {std::vector<Athlete> athletesList;for (int row = 0; row < rowCount(); ++row) {Athlete athlete;athlete.name = item(row, 0)->text().toStdString();for (int col = 1; col <= 6; ++col) { // 假设前6列是成绩athlete.scores[col - 1] = item(row, col)->text().toFloat();}athlete.totalScore = item(row, 7)->text().toFloat(); // 假设第7列是总分athletesList.push_back(athlete);}return athletesList;
}

3)需要确保UI中有一个Tool Button按钮,命名为actionBtn

4)在mainwindow.cpp中添加按钮以及其槽函数
//其他内容....
#include <QtCharts>
using namespace QtCharts;//其他代码....QAction* actBtn = new QAction(QIcon(":/ZXT.png"), "折线图");ui->actionBtn->setDefaultAction(actBtn);connect(ui->actionBtn, &QToolButton::triggered, this, [=]() {QChart *chart = new QChart();chart->setTitle("运动员成绩折线图");chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignBottom);// 获取所有运动员的列表auto athletes = model->getAthletes();for (const auto &athlete : athletes) {QLineSeries *series = new QLineSeries();series->setName(QString::fromStdString(athlete.name));for (int i = 0; i < 6; ++i) { // 假设有6次成绩series->append(i + 1, athlete.scores[i]); // 添加每次成绩到序列}chart->addSeries(series);}chart->createDefaultAxes();if (!athletes.empty()) {// 假设所有运动员至少有一次成绩,设置水平轴范围为1到6chart->axes(Qt::Horizontal).first()->setRange(1, 6);// 这里需要确定垂直轴的合适范围float maxScore = 0;float minScore = 200;for (const auto &athlete : athletes) {for (float score : athlete.scores) {if (score > maxScore) maxScore = score;if (score < minScore) minScore = score;}}chart->axes(Qt::Vertical).first()->setRange(minScore, maxScore);}QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);// 创建一个新窗口显示这个图表QMainWindow *chartWindow = new QMainWindow();chartWindow->setCentralWidget(chartView);chartWindow->resize(1000, 500);chartWindow->setWindowIcon(QIcon(":/ZXT.png"));chartWindow->setWindowTitle("成绩折线图");chartWindow->show();});ui->actionBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//其他代码....


5)最后导出安装
参考这篇博文:
QT导出安装文件的方法(WIN和Andriod平台)_qt怎么导出项目-CSDN博客
windeployqt study_Qt.exe
我的下一篇博文对该程序继续优化,增加了保存按钮:C++ Qt框架开发|基于Qt框架开发实时成绩显示排序系统(3) 保存表格数据-CSDN博客
相关文章:
C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示
对上一篇的工作C学习笔记 | 基于Qt框架开发实时成绩显示排序系统1-CSDN博客继续优化,增加一个显示运动员每组成绩的折线图。 1)在Qt Creator的项目文件(.pro文件)中添加对Qt Charts模块的支持: QT charts 2…...
Microsoft Excel 加载数据分析工具
Microsoft Excel 加载数据分析工具 1. 打开 Excel,文件 -> 选项2. 加载项 -> 转到…3. 分析工具库、分析工具库 - VBA4. 打开 Excel,数据 -> 数据分析References 1. 打开 Excel,文件 -> 选项 2. 加载项 -> 转到… 3…...
Day32 贪心算法part02
买卖股票的最佳时机 太牛了我,随随便便双指针秒杀 md题解里面双指针都没用直接for循环秒杀 跳跃游戏 写成这样纯粹是没有看到第一次跳跃必须从第一个开始 class Solution:def canJump(self, nums: List[int]) -> bool:if len(nums) 1:return Truefor i in …...
3分钟带你了解Vue3的nextTick()
前言 Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。简单来说,Vue在修改数据后,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新ÿ…...
数据库的使用方法
sqlite3 API: 头文件: #include <sqlite3.h> 编译时候要加上-lsqlite3 gcc a.c -lsqlite3 1)sqlite3_open int sqlite3_open(const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db …...
HTML5和CSS3强化知识总结
HTML5的新特性 HTML5的新增特性主要是针对于以前的不足,增一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题,基本是IE9以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。 HTML5新增的语义…...
华为机考入门python3--(13)牛客13-句子逆序
分类:列表 知识点: 列表逆序(和字符串逆序是一样的) my_list[::-1] 题目来自【牛客】 def reverse_sentence(sentence): # 将输入的句子分割words sentence.split() # 将单词逆序排列 words words[::-1] # 将单词用空…...
javaScript实现客户端直连AWS S3(亚马逊云)文件上传、断点续传、断网重传
写在前面:在做这个调研时我遇到的需求是前端直接对接亚马逊平台实现文件上传功能。上传视频文件通常十几个G、客户工作环境网络较差KB/s,且保证上传是稳定的,支持网络异常断点重试、文件断开支持二次拖入自动重传等。综合考虑使用的Aws S3的分…...
从基建发力,CESS 如何推动 RWA 发展?
2023 年 11 月 30 日,Web3 基金会(Web3 Foundation)宣布通过 Centrifuge 将部分资金投资于 RWA(Real World Assets,真实世界资产),试点投资为 100 万美元。Web3 基金会旨在通过支持专注于隐私、…...
qml写一个自适应登录框
1、前言 写一个可自由伸缩的登录框,,(横向上) 关键:给相关控件赋予 Layout.fillWidth: true 属性 即可。 2、代码 //main.qml import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQml 2.12 import QtQuic…...
考研高数(导数的定义)
总结: 导数的本质就是极限。 函数在某点可导就必连续,连续就有极限且等于该点的函数值。 例题1:(归结原则的条件是函数可导) 例题2: 例题3:...
ChatGPT在国际中文教育领域引起的变革与挑战
随着ChatGPT这一先进的自然语言处理模型的出现,教学、学习、测评和辅导的传统方式正在面临可能的重塑。她是否会影响中文教育的未来方向,甚至取代中文教师的角色,成为了许多人热议的话题。本文旨在探讨ChatGPT与中文测评之间的联系࿰…...
C语言—基础数据类型(含进制转换)
进制转换不多,但我觉得适合小白(我爱夸自己嘿嘿) 练习 1. 确认基础类型所占用的内存空间(提示:使用sizeof 运算符): 在这里我说一下,long 类型通常占用 4 字节。在 64 位系统上,long 类型通常也可为 8 字节。 格式…...
警钟长鸣-合同问题
由于去年入职了某家公司,本来想着临时过渡一下,虽然签的时候发现合同和竞业协议存在很明显的问题或者说好听点“限制比较严?”,大部分互联网公司都成了它的假想敌,但是本着来都来了的想法就签了,于是导致发…...
CAN通讯协议学习
介绍 它是一种异步通讯,can_high和can_low两条线利用的是电位差传输信号,抗干扰能力强,但是必须要有can控制器如TJA1050(我的开发板) 当 CAN 节点需要发送数据时,控制器把要发送的二进制编码通过 CAN_Tx 线…...
Spring Boot 笔记 008 创建接口_获取用户信息
1.1.1 编写userinfo接口 1.1.2 User实体类中增加转json忽略password注释 package com.geji.pojo;import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data;import java.time.LocalDateTime;//lombok 在…...
EMC学习笔记(二十六)降低EMI的PCB设计指南(六)
降低EMI的PCB设计指南(六) 1.PCB布局1.1 带键盘和显示器的前置面板PCB在汽车和消费类应用中的应用1.2 敏感元器件的布局1.3 自动布线器 2.屏蔽2.1 工作原理2.2 屏蔽接地2.3 电缆屏蔽至旁路2.4 缝隙天线:冷却槽和缝隙 tips:资料主要…...
pytorch花式索引提取topk的张量
文章目录 pytorch花式索引提取topk的张量问题设定代码实现索引方法gather方法验证 补充知识expand方法gather方法randint pytorch花式索引提取topk的张量 问题设定 或者说,有一个(bs, dim, L)的大张量,索引的index形状为(bs, X),想得到一个(…...
Swagger2
Swagger2 引入依赖 <!-- springfox-swagger2 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.10.5</version></dependency>编写配置 @Configuration public …...
2024/2/13
数组练习 1、选择题 1.1、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a 数组的第10个元素是 D A)a[0][4] B) a[1][3] C)a[0][3] D)a[1][4] 1.2、有数组 int a[5] {10,20,30,40&…...
OpenClaw主控Agent配置:任务分发、流程调度,打造专属SEO自动化团队
构建智能中枢:OpenClaw主控Agent的深度配置与SEO自动化团队实践引言在数字化营销日益激烈的今天,搜索引擎优化(SEO)已成为企业获取流量、提升品牌曝光不可或缺的策略。然而,传统的SEO操作往往涉及大量重复性、耗时耗力…...
提升网络调试效率,快马AI一键生成端口扫描与服务检测实用脚本
最近在调试网络服务时,经常需要手动检查端口状态和接口可用性,重复劳动特别耗时。于是尝试用Python写了个自动化工具,发现效果不错,分享下实现思路和使用体验。 端口扫描功能实现 通过socket模块实现基础的TCP连接检查,…...
MOOTDX实战指南:零门槛获取股票数据的Python解决方案
MOOTDX实战指南:零门槛获取股票数据的Python解决方案 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 副标题:量化投资 | 金融数据接口 | Python工具库 一、价值定位&#…...
为什么92%的FastAPI AI服务仍在用阻塞式响应?(深度剖析async def vs sync def在LLM流式场景下的内存泄漏与协程死锁)
第一章:FastAPI 2.0异步AI流式响应的核心价值与演进脉络在大模型服务规模化部署的背景下,传统同步HTTP响应已难以满足低延迟、高吞吐、用户体验敏感的AI交互场景。FastAPI 2.0通过深度整合Python 3.11原生异步运行时、优化ASGI中间件栈及重构StreamingRe…...
避坑指南:在Ubuntu 20.04上搞定XTDrone+ORB-SLAM2,我踩过的那些依赖版本坑
避坑指南:在Ubuntu 20.04上搞定XTDroneORB-SLAM2,我踩过的那些依赖版本坑 当你在Ubuntu 20.04上尝试搭建XTDrone与ORB-SLAM2的开发环境时,可能会遇到各种令人抓狂的依赖版本冲突问题。作为一个经历过无数次失败后终于成功配置的开发老手&…...
pose-search:5分钟搭建你的人体姿态搜索系统
pose-search:5分钟搭建你的人体姿态搜索系统 【免费下载链接】pose-search x6ud.github.io/pose-search 项目地址: https://gitcode.com/gh_mirrors/po/pose-search 在人工智能技术飞速发展的今天,人体姿态搜索已成为计算机视觉领域的重要突破。p…...
Stash缓存机制终极指南:5个配置技巧大幅提升媒体访问速度
Stash缓存机制终极指南:5个配置技巧大幅提升媒体访问速度 【免费下载链接】stash An organizer for your porn, written in Go. Documentation: https://docs.stashapp.cc 项目地址: https://gitcode.com/gh_mirrors/st/stash Stash是一款用Go语言开发的媒体…...
FxSound高级功能开发:插件系统与第三方集成技术深度解析
FxSound高级功能开发:插件系统与第三方集成技术深度解析 【免费下载链接】fxsound-app FxSound application and DSP source code 项目地址: https://gitcode.com/gh_mirrors/fx/fxsound-app FxSound是一款专业的数字音频处理软件,其强大的插件系…...
革新华硕笔记本性能控制:轻量级开源工具GHelper全面解析
革新华硕笔记本性能控制:轻量级开源工具GHelper全面解析 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...
Xilinx 7Series与UltraScale FPGA在线升级:STARTUPE2与STARTUPE3原理解析与实战配置
1. FPGA在线升级的核心挑战与解决方案 当我们需要对部署在设备上的FPGA进行固件升级时,最头疼的问题就是如何在不拆机的情况下完成这个操作。想象一下,如果你的智能家居设备需要更新固件,每次都要拆开外壳用JTAG线连接,那简直是工…...
