当前位置: 首页 > news >正文

Qt绘制简单图表

Qt图表类似于model/view,chart就是model。
创建图表的各个部件:
QChart *chart = new QChart();chart->setTitle(tr("简单函数曲线"));
//    chart->setAcceptHoverEvents(true);ui->chartView->setChart(chart);ui->chartView->setRenderHint(QPainter::Antialiasing);QLineSeries *series0 = new QLineSeries();QLineSeries *series1 = new QLineSeries();series0->setName("Sin曲线");series1->setName("Cos曲线");curSeries=series0; //当前序列QPen    pen;pen.setStyle(Qt::DotLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLinepen.setWidth(2);pen.setColor(Qt::red);series0->setPen(pen); //折线序列的线条设置pen.setStyle(Qt::SolidLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLinepen.setColor(Qt::blue);series1->setPen(pen);//折线序列的线条设置chart->addSeries(series0);chart->addSeries(series1);

创建坐标轴:

QValueAxis *axisX = new QValueAxis;curAxis=axisX; //当前坐标轴axisX->setRange(0, 10); //设置坐标轴范围axisX->setLabelFormat("%.1f"); //标签格式axisX->setTickCount(11); //主分隔个数axisX->setMinorTickCount(4);axisX->setTitleText("time(secs)"); //标题
//    axisX->setGridLineVisible(false);QValueAxis *axisY = new QValueAxis;axisY->setRange(-2, 2);axisY->setTitleText("value");axisY->setTickCount(5);axisY->setLabelFormat("%.2f"); //标签格式
//    axisY->setGridLineVisible(false);axisY->setMinorTickCount(4);

将坐标轴添加进图表:

    chart->addAxis(axisX,Qt::AlignBottom); //坐标轴添加到图表,并指定方向chart->addAxis(axisY,Qt::AlignLeft);series0->attachAxis(axisX); //序列 series0 附加坐标轴series0->attachAxis(axisY);series1->attachAxis(axisX);//序列 series1 附加坐标轴series1->attachAxis(axisY);
从图表上获取数据更新界面显示:
void MainWindow::updateFromChart()
{ //从图表上获取数据更新界面显示QChart  *aChart;aChart=ui->chartView->chart();  //获取chartui->editTitle->setText(aChart->title()); //图表标题QMargins    mg=aChart->margins(); //边距ui->spinMarginLeft->setValue(mg.left());ui->spinMarginRight->setValue(mg.right());ui->spinMarginTop->setValue(mg.top());ui->spinMarginBottom->setValue(mg.bottom());
}

设置图表各种参数:

void MainWindow::on_btnSetTitle_clicked()
{ //设置图标标题文字QString str=ui->editTitle->text();ui->chartView->chart()->setTitle(str);
}void MainWindow::on_btnSetTitleFont_clicked()
{ //设置图标标题文字的字体QFont font=ui->chartView->chart()->titleFont();bool  ok=false;font=QFontDialog::getFont(&ok,font);if (ok)ui->chartView->chart()->setTitleFont(font);
}void MainWindow::on_btnSetMargin_clicked()
{//设置图标的4个边距QMargins    mgs;mgs.setLeft(ui->spinMarginLeft->value());mgs.setRight(ui->spinMarginRight->value());mgs.setTop(ui->spinMarginTop->value());mgs.setBottom(ui->spinMarginBottom->value());ui->chartView->chart()->setMargins(mgs);
}{//图例是否可见ui->chartView->chart()->legend()->setVisible(checked);
}void MainWindow::on_btnSetAxisRange_clicked()
{ //设置坐标轴的坐标范围curAxis->setRange(ui->spinAxisMin->value(),ui->spinAxisMax->value());
}void MainWindow::on_chkGridLineVisible_clicked(bool checked)
{ //轴的网格线是否可见curAxis->setGridLineVisible(checked);
}void MainWindow::on_chkMinorTickVisible_clicked(bool checked)
{ //次级刻度是否可见curAxis->setMinorGridLineVisible(checked);
}void MainWindow::on_chkBoxLegendBackground_clicked(bool checked)
{//图例的背景是否可见ui->chartView->chart()->legend()->setBackgroundVisible(checked);
}void MainWindow::on_radioButton_clicked()
{//图例的位置ui->chartView->chart()->legend()->setAlignment(Qt::AlignTop);
}void MainWindow::on_radioButton_2_clicked()
{//图例的位置ui->chartView->chart()->legend()->setAlignment(Qt::AlignBottom);
}void MainWindow::on_radioButton_3_clicked()
{//图例的位置ui->chartView->chart()->legend()->setAlignment(Qt::AlignLeft);
}void MainWindow::on_radioButton_4_clicked()
{//图例的位置ui->chartView->chart()->legend()->setAlignment(Qt::AlignRight);
}void MainWindow::on_btnLegendFont_clicked()
{ //图例的字体设置QFont font=ui->chartView->chart()->legend()->font();bool  ok=false;font=QFontDialog::getFont(&ok,font);if (ok)ui->chartView->chart()->legend()->setFont(font);
}void MainWindow::on_btnLegendlabelColor_clicked()
{//图例的文字颜色设置QColor  color=ui->chartView->chart()->legend()->labelColor();color=QColorDialog::getColor(color);if (color.isValid())ui->chartView->chart()->legend()->setLabelColor(color);
}void MainWindow::on_btnGridLineColor_clicked()
{ //网格线的颜色设置QColor   color=curAxis->gridLineColor();color=QColorDialog::getColor(color);if (color.isValid())curAxis->setGridLineColor(color);
}void MainWindow::on_pushButton_10_clicked()
{ //网格线的Pen设置QPen    pen;pen=curAxis->gridLinePen();bool    ok=false;pen=QWDialogPen::getPen(pen,ok);if (ok)curAxis->setGridLinePen(pen);
}void MainWindow::on_chkAxisLineVisible_clicked(bool checked)
{//刻度是否可见curAxis->setLineVisible(checked);
}void MainWindow::on_btnAxisLinePen_clicked()
{QPen    pen;pen=curAxis->linePen();bool    ok=false;pen=QWDialogPen::getPen(pen,ok);if (ok)curAxis->setLinePen(pen);
}void MainWindow::on_btnAxisLinePenColor_clicked()
{QColor   color=curAxis->linePenColor();color=QColorDialog::getColor(color);if (color.isValid())curAxis->setLinePenColor(color);
}void MainWindow::on_btnMinorColor_clicked()
{//次级刻度网格线颜色QColor   color=curAxis->minorGridLineColor();color=QColorDialog::getColor(color);if (color.isValid())curAxis->setMinorGridLineColor(color);
}void MainWindow::on_btnMinorPen_clicked()
{//次级刻度线Pen设置QPen    pen;pen=curAxis->minorGridLinePen();bool    ok=false;pen=QWDialogPen::getPen(pen,ok);if (ok)curAxis->setMinorGridLinePen(pen);
}

设置数据序列各种属性:

void MainWindow::on_chkPointVisible_clicked(bool checked)
{//序列的数据点是否可见curSeries->setPointsVisible(checked);
}void MainWindow::on_chkPointLabelVisible_clicked(bool checked)
{ //序列的数据点标签是否可见curSeries->setPointLabelsVisible(checked);
}void MainWindow::on_btnSeriesName_clicked()
{ //设置序列名称curSeries->setName(ui->editSeriesName->text());if (ui->radioSeries0->isChecked())ui->radioSeries0->setText(ui->editSeriesName->text());elseui->radioSeries1->setText(ui->editSeriesName->text());
}void MainWindow::on_btnSeriesColor_clicked()
{ //序列的曲线颜色QColor  color=curSeries->color();color=QColorDialog::getColor(color);if (color.isValid())curSeries->setColor(color);
}void MainWindow::on_radioSeries0_clicked()
{//获取当前数据序列if (ui->radioSeries0->isChecked())curSeries=(QLineSeries *)ui->chartView->chart()->series().at(0);elsecurSeries=(QLineSeries *)ui->chartView->chart()->series().at(1);
//获取序列的属性值,并显示到界面上ui->editSeriesName->setText(curSeries->name());ui->chkSeriesVisible->setChecked(curSeries->isVisible());ui->chkPointVisible->setChecked(curSeries->pointsVisible());ui->sliderSeriesOpacity->setValue(curSeries->opacity()*10);ui->chkPointLabelVisible->setChecked(curSeries->pointLabelsVisible());
}void MainWindow::on_chkSeriesVisible_clicked(bool checked)
{//序列是否可见this->curSeries->setVisible(checked);
}void MainWindow::on_btnSeriesPen_clicked()
{//序列线条的Pen设置bool    ok=false;QPen    pen;pen=curSeries->pen();pen=QWDialogPen::getPen(pen,ok);if (ok)curSeries->setPen(pen);
}void MainWindow::on_sliderSeriesOpacity_valueChanged(int value)
{//序列的透明度curSeries->setOpacity(value/10.0);
}void MainWindow::on_btnSeriesLabColor_clicked()
{//序列数据点标签颜色QColor  color=curSeries->pointLabelsColor();color=QColorDialog::getColor(color);if (color.isValid())curSeries->setPointLabelsColor(color);}void MainWindow::on_btnSeriesLabFont_clicked()
{//序列数据点标签字体QFont   font;font=curSeries->pointLabelsFont();bool    ok=false;font=QFontDialog::getFont(&ok,font);if (ok)curSeries->setPointLabelsFont(font);
}void MainWindow::on_radioSeriesLabFormat0_clicked()
{ //序列数据点标签的显示格式curSeries->setPointLabelsFormat("@yPoint");
}void MainWindow::on_radioSeriesLabFormat1_clicked()
{//序列数据点标签的显示格式curSeries->setPointLabelsFormat("(@xPoint,@yPoint)");
}

设置坐标轴属性:

void MainWindow::on_chkBoxVisible_clicked(bool checked)
{ //坐标轴是否可见curAxis->setVisible(checked);
}void MainWindow::on_btnAxisSetTitle_clicked()
{ //设置坐标轴的标题curAxis->setTitleText(ui->editAxisTitle->text());
}void MainWindow::on_btnAxisSetTitleFont_clicked()
{ //设置坐标轴的标题的字体QFont   font=curAxis->titleFont();bool    ok=false;font=QFontDialog::getFont(&ok,font);if (ok)curAxis->setTitleFont(font);
}void MainWindow::on_chkBoxAxisTitle_clicked(bool checked)
{ //轴标题是否可见curAxis->setTitleVisible(checked);
}void MainWindow::on_pushButton_clicked()
{//设置坐标轴刻度标签的文字格式curAxis->setLabelFormat(ui->editAxisLabelFormat->text());
}void MainWindow::on_btnAxisLabelColor_clicked()
{//设置坐标轴刻度标签的文字颜色QColor   color=curAxis->labelsColor();color=QColorDialog::getColor(color);if (color.isValid())curAxis->setLabelsColor(color);
}void MainWindow::on_btnAxisLabelFont_clicked()
{//设置坐标轴刻度标签的文字字体QFont   font=curAxis->labelsFont();bool    ok=false;font=QFontDialog::getFont(&ok,font);if (ok)curAxis->setLabelsFont(font);
}void MainWindow::on_chkBoxLabelsVisible_clicked(bool checked)
{//轴的刻度标签是否可见curAxis->setLabelsVisible(checked);
}
动画效果:
void MainWindow::on_cBoxAnimation_currentIndexChanged(int index)
{//动画效果ui->chartView->chart()->setAnimationOptions(QChart::AnimationOptions(index));
//    ui->chartView->chart()->setAnimationOptions(QChart::SeriesAnimations);
//    ui->chartView->chart()->setAnimationOptions(QChart::AllAnimations);
}
图标的主题:
void MainWindow::on_cBoxTheme_currentIndexChanged(int index)
{ //图标的主题ui->chartView->chart()->setTheme(QChart::ChartTheme(index));
}

尺寸相关:

void MainWindow::on_actZoomIn_triggered()
{//放大ui->chartView->chart()->zoom(1.2);//zoomIn();
}void MainWindow::on_actZoomOut_triggered()
{//缩小ui->chartView->chart()->zoom(0.8);//zoomOut();
}void MainWindow::on_actZoomReset_triggered()
{//复位ui->chartView->chart()->zoomReset();
}

相关文章:

Qt绘制简单图表

Qt图表类似于model/view,chart就是model。 创建图表的各个部件: QChart *chart new QChart();chart->setTitle(tr("简单函数曲线")); // chart->setAcceptHoverEvents(true);ui->chartView->setChart(chart);ui->chartVi…...

CCLink转Modbus TCP网关_MODBUS网口设置

兴达易控CCLink转Modbus TCP网关是一种用于连接CCLink网络和Modbus TCP网络的设备。它提供了简单易用的MODBUS网口设置,可以帮助用户轻松地配置和管理网络连接 1 、网关做为MODBUS主站 (1)将电脑用网线连接至网关的P3网口上。 (…...

Vux购物车案例

一、综合案例 - 创建项目 本案例主要针对Vuex共享数据的练习以及父子组件数据的共享。 脚手架新建项目 (注意:勾选vuex) 版本说明: vue2 vue-router3 vuex3 vue3 vue-router4 vuex4/pinia vue create vue-cart-demo将原本src内容清空,替换…...

浅析网络协议-HTTP协议

1.HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图…...

启动Docker服务后显示Docker Engine stopped

1、重新启动Docker服务:打开Windows服务管理器(可以在开始菜单中搜索),找到"Docker Desktop Service"或类似命名的服务,右键单击并选择"重启"。稍等片刻,看看是否重新启动成功 2、尝试…...

Centos7 升级到 Centos8 教程以及关于dnf包管理工具的若干问题解决方案

目录 为什么升级一、参考文档二、升级步骤三、安装git编码错误缓存问题安装git依赖冲突问题解决办法 为什么升级 jenkins 2.4版本需要CentOS8 一、参考文档 点我 二、升级步骤 1.安装epel源 yum -y install epel-release2.安装rpmconf和yum-utils yum -y install rpmco…...

计算机网络技术(一)

深入浅出计算机网络 微课视频_哔哩哔哩_bilibili 第一章概述 1.1 信息时代的计算机网络 1. 计算机网络各类应用 2. 计算机网络带来的负面问题 3. 我国互联网发展情况 1.2 因特网概述 1. 网络、互连网(互联网)与因特网的区别与关系 如图所示&#xff0…...

redis监听key失效

前言 ​ 使用redis进行大数据量信息存储时,如存储百万级别设备/通道信息,如果我们想获取设备/通道是否失效,常规的方法是定时获取,但是这样对于应用来说太消耗性能。 ​ redis提供了一种key事件监听的机制,应用可以监…...

echart宽度100px原因(解决el-tabs里的echarts图表宽度不自适应,只有100px问题)

目录 问题描述产生原因处理方法1.使用echart 的API —— resize()2.使用 v-if 总结 问题描述 项目中在el-tabs下面使用了图表,发现图表的宽度始终只有100px 产生原因 首先echart初始化的组件宽度设置了width: 100%,那么本来这个时候,echar…...

【使用教程】在Ubuntu下PMM60系列一体化伺服电机通过PDO跑循环同步位置模式详解

本教程将指导您在Ubuntu操作系统下使用PDO来配置和控制PMM60系列一体化伺服电机以实现循环同步位置模式。我们将介绍必要的步骤和命令,以确保您能够成功地配置和控制PMM系列一体化伺服电机。 一、准备工作 在正式介绍之前还需要一些准备工作:1.装有lin…...

【机器学习】七、降维与度量学习

1. 维数灾难 样本的特征数称为维数(dimensionality),当维数非常大时,也就是现在所说的维数灾难。 维数灾难具体表现在:在高维情形下,数据样本将变得十分稀疏,因为此时要满足训练样本为“密采样…...

Yolov5 + 界面PyQt5 +.exe文件部署运行

介绍 Yolov5是一种基于深度学习的目标检测算法,PyQt5是一个Python编写的GUI框架,用于创建交互式界面。在部署和运行Yolov5模型时,结合PyQt5可以方便地创建一个用户友好的界面,并将代码打包为.exe文件以供其他人使用。 下面是一个…...

工作记录--(用HTTPS,为啥能被查出浏览记录?如何解决?)---每天学习多一点

由于网络通信有很多层,即使加密通信,仍有很多途径暴露你的访问地址,比如: DNS查询:通常DNS查询是不会加密的,所以,能看到你DNS查询的观察者(比如运营商)是可以推断出访问…...

MySQL-基础篇

文章目录 第一章 MYSQL 概述数据库相关概念MySQL 数据库下载安装启动和停止 MySQL客户端连接解决:mysql 不是内部或外部命令,也不是可运行的程序或批处理文件。配置 Path 环境变量解决:net start mysql80 发生系统错误 5。 拒绝访问。MYSQL 的…...

1.Osmdroid概述

愿你出走半生,归来仍是少年! 在最初使用时曾写下了一系列关于OsmDroid的文章,去年开始又基于它做了一系列的项目并且现阶段又使用了新的底图框架,所以在此总结。 1.什么是OsmDroid osmdroid是Android的MapView (v1 API)类的一个(几乎)完全/免…...

Excel表列名称

题意: 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: columnNumber 1 输出: “A”…...

ORDER BY limit 10比ORDER BY limit 100更慢

问题分析 pg数据库中执行sql时,ORDER BY limit 10比ORDER BY limit 100更慢 执行计划分析 SELECT*,(select cl.ITEM_DESC from tablelzl2 cl where item_namename and cl.ITEM_NOabcdefg) AS "item"FROMtablelzl1 RIWHERE RI.column1AAAAAND RI.colum…...

aws亚马逊云:置以使用 Amazon EC2!!!

完成本部分中的任务,以便为首次启动 Amazon EC2 实例进行设置: 注册一个 AWS 账户 创建管理用户 创建密钥对 创建安全组 完成后,您将准备好学习 Amazon EC2 入门教程。 注册一个 AWS 账户 如果您还没有 AWS 账户,请完成以下…...

torch.cat()、 torch.add()、torch.subtract()、torch.subtract()和torch.div()函数详解和示例

本文通过原理和示例对torch.cat()、 torch.add()、torch.subtract()、torch.subtract()、torch.div()和torch.linalg.solve() 函数进行详解,以帮助大家理解和使用。 目录 torch.cat()函数torch.add()函数torch.subtract()函数逐元素减法示例矩阵减法示例 torch.mul…...

jetsonTX2 nx配置tensorRT加速yolov5推理

环境说明 Ubuntu 18conda环境python3.9cuda10.2,硬件平台是Jetson tx2 nx 前提你已经能运行YOLOV5代码后,再配置tensorRT进行加速。 目前只试了图片检测和C打开USB摄像头进行视频检测,希望是使用python配合D435i深度相机来实现检测&#xff…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...