基于Qt实现的可视化大屏监控

基于Qt实现的可视化大屏监控

先上图
在这里插入图片描述

基于Qt实现的可视化大屏监控

总有人质疑QWidget实现不了炫酷的界面,其实QWidget已经很强大了,虽然很多效果没有现成的框架,所以比不上html5或者安卓这种,但是也能实现很多不错的效果了,而且在嵌入式设备上一样能达到这种效果,这是其他很多框架所不能实现的。

本次大屏监控主要使用以下技术:

  • QWidget
  • QChart
  • QCustomPlot

需要代码的,可以留下邮箱地址

QChart 教程

QChart 是 Qt 中的一种可视化图表库,可以方便地创建各种类型的图表,例如折线图、柱状图、饼图等。下面是一份 QChart 的基础使用教程。

  1. 安装与引入

首先需要安装 Qt 和 QChart 库。Qt 可以在官网下载安装,QChart 库可以通过在 Qt Creator 中添加 Qt Charts module 进行安装。

在 Qt Creator 中创建一个新的项目,然后在项目文件 (.pro) 中添加以下代码以引入 QChart 库:

QT += charts
  1. 创建图表

创建一个图表需要以下步骤:

  • 创建一个 QChart 对象。
  • 创建一些 QSeries 对象,这些对象代表图表中的数据系列。
  • 将 QSeries 对象添加到 QChart 中。
  • 创建一个 QChartView 对象,将 QChart 对象设置为其父对象,并将其添加到布局中。

以下是一个简单的例子:

// 创建一个 QChart 对象
QChart *chart = new QChart();
// 设置图表的标题
chart->setTitle("Simple chart example");
// 创建一个 QPieSeries 对象
QPieSeries *series = new QPieSeries();
// 添加一些数据到系列中
series->append("First", 1);
series->append("Second", 2);
series->append("Third", 3);
// 将系列添加到图表中
chart->addSeries(series);
// 创建一个 QChartView 对象,将图表设置为父对象,并将其添加到布局中
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
// 将图表视图添加到布局中
this->layout()->addWidget(chartView);
  1. 美化图表

你可以通过以下方式来美化你的图表:

  • 使用 QChart::setAnimationOptions() 方法来启用动画效果。
  • 使用 QPieSeries::setExploded() 和 QPieSeries::setLabelVisible() 方法来设置饼图的爆炸和标签可见性。
  • 使用 QChart::legend() 方法来设置图例的样式。
  • 使用 QChartView::setRenderHint() 方法来设置渲染的质量。
  • 使用 QChartView::setAxisX() 和 QChartView::setAxisY() 方法来设置轴的样式。

以下是一个例子:

// 启用动画效果和标签可见性
chart->setAnimationOptions(QChart::AllAnimations);
// 设置饼图的爆炸和标签可见性
series->setExploded(true);
series->setLabelVisible(true);
// 设置图例的样式
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
// 设置轴的样式和标签格式
QValueAxis *axisX = new QValueAxis;
axisX->setRange(0, 10);
axisX->setLabelFormat("%i");
chartView->setAxisX(axisX, series);
QValueAxis *axisY = new QValueAxis;
axisY->setRange(0, 10);
axisY->setLabelFormat("%i");
chartView->setAxisY(axisY, series);
// 设置渲染质量,并启用轴线和高亮显示(可选)等效果。
chartView->setRenderHint(QPainter::Antialiasing);  // Set antialiasing for the chart. Optional.
chartView->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);  // Enable range dragging and zooming. Optional.

QCustomPlot 教程

QCustomPlot 是一个用于 Qt 的强大的绘图库,它允许你轻松地绘制各种类型的图表,如折线图、柱状图、饼图等。下面是一份 QCustomPlot 的基础使用教程。

  1. 安装与引入

首先你需要安装 Qt 和 QCustomPlot 库。你可以在 Qt 的官网下载安装,而 QCustomPlot 库可以在其官方网站或者在 Qt Creator 中通过添加 Qt Charts module 进行安装。

在 Qt Creator 中创建一个新的项目,然后在项目文件 (.pro) 中添加以下代码以引入 QCustomPlot 库:

QT += charts
  1. 创建图表

创建一个图表主要需要以下步骤:

  • 创建一个 QCustomPlot 对象。
  • 创建一个或多个 QCPGraph 对象代表数据。
  • 通过 QCPGraph::addData 或者 QCPGraph::setData 来设置数据。
  • 可以设置图表的标题,X轴和Y轴的标签等。

以下是一个简单的例子:

// 创建一个 QCustomPlot 对象
QCustomPlot *customPlot = new QCustomPlot();
// 设置图表的标题
customPlot->setTitle("Simple chart example");
// 设置X轴和Y轴的标签
customPlot->xAxis->setLabel("X axis");
customPlot->yAxis->setLabel("Y axis");
// 创建一个 QCPGraph 对象
QCPGraph *graph = customPlot->addGraph();
// 设置数据
graph->addData(1, 2);
graph->addData(2, 3);
graph->addData(3, 4);
// 根据数据自动调整坐标轴的范围以显示所有的数据点
customPlot->rescaleAxes();
// 将图表绘制到屏幕上
customPlot->replot();
  1. 美化图表

你可以通过以下方式来美化你的图表:

  • 通过 QCustomPlot::setInteractions 方法来设置用户与图表的交互方式。例如,你可以启用用户通过鼠标来缩放、平移图表,或者点击图表上的数据点来获得更多信息的功能。
  • 通过 QCPAxis::setLabel 和 QCPAxis::setTickLabel 来设置轴的标签的样式。例如,你可以设置标签的字体、颜色等属性。
  • 通过 QCPGraph::setPen 和 QCPGraph::setDataColor 方法来设置数据点和连线的样式。例如,你可以设置颜色、线型、宽度等属性。
  • 通过 QCustomPlot::setBackground 和 QCustomPlot::setCanvasColor 方法来设置图表的背景色。
  • 通过 QCustomPlot::legend->setVisible 和 QCustomPlot::legend->setAlignment 来设置图例的可见性和位置。

以下是一个例子:

// 设置交互方式
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);  // Enable range dragging, range zooming and selection of plottables (data points, lines, etc.) by点击. Optional.选择`QCP::iSelectPlottables`来点击获取数据点信息`Optional`.打在屏幕上的图像和信息是低分辨率的,通常只作为文章的一部分这样排版就结束了,希望这份教程对你有所帮助!如有其他疑问,欢迎继续提问。QCustomPlot 的美化图表除了上述提到的一些功能,QCustomPlot 还有许多其他可以用来美化图表的选项。下面是一些额外的功能:1. 添加网格线:
使用 QCustomPlot::gridLinesVisible() 方法设置是否显示网格线。通过 QCustomPlot::setGridLinePen 和 QCustomPlot::setGridLineInterpolate方法分别设置网格线的颜色、线型和是否插值。
2. 设置轴线的交叉点:
使用 QCPAxis::setTickLabelPosition 和 QCPAxis::setLabelPosition 方法设置轴线的标签和刻度线的位置。可以使用 QCPAxis::setTickLabelType 和 QCPAxis::setLabelType 来设置标签的类型。
3. 设置数据的标签:
通过 QCPGraph::setLabel 和 QCPGraph::setData 添加数据的同时,可以为每一个数据点设定一个标签。
4. 设置图像的填充色:
使用 QCustomPlot::setBrush 和 QCustomPlot::setGraphs 的方法,可以设置图表中图形的填充色。
5. 设置提示框:
通过 QCustomPlot::setCursorMode 和 QCustomPlot::setCrosshairAxes 方法,可以在图表上设置一个提示框,显示当前鼠标位置的数据信息。
6. 定制坐标轴的标签和刻度线:
使用 QCPAxis::setLabelFont、setLabelColor、setTickLabelFont 和 setTickLabelColor 方法,可以定制坐标轴标签和刻度线的字体和颜色。
7. 添加标记:
通过 QCPGraph::addScatterStyle 和 QCPGraph::setScatterStyle 方法,可以在图表的数据点上添加标记。
8. 导出图表为图片:
使用 QCustomPlot::savePng 和 QCustomPlot::savePdf 方法,可以将图表保存为 PNG 或 PDF 格式的图片或文件。这些是一些常用的美化图表的技巧,但并不是全部。QCustomPlot 是一个功能强大的绘图库,你可以根据需要尝试更多的功能,来美化你的图表并使其更具表现力。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Jetpack Compose干货,如何让Compose Dialog从屏幕任意方向进入

一、前言 来个效果图,基于Compose Dialog,最终要实现的库能力如下: 这里使用的是这个包下面的: androidx.compose.ui.window.Dialog androidx.compose.material3.AlertDialog它内部调用的也是androidx.compose.ui.window.Dialog …

Android开源 日志框架 LogDog V2.3.1

目录 一、简介 二、下载使用 添加jitpack 仓库 添加依赖: 三、更改 1、 LogDogV2.3.1初始化: 2、通过上面的初始化 ,已经知道IJsonEngine 优化了泛型参数,采用 Object/Any 3、优化空异常的判断,哪怕打印变量是NULL LogDog会打印“nul…

Activiti7工作流 二【Activiti7入门、Activiti7进阶】

文章目录 六、Activiti7入门6.1 业务流程建模6.1.1 绘制流程图6.1.2 指定任务负责人6.1.3 生成png格式流程图 6.2 部署流程定义6.3 启动流程实例6.4 任务查询6.5 任务处理6.6 添加审批意见6.6 查看历史审批 七、Activiti7进阶7.1 流程定义相关7.1.1 流程定义查询7.1.2 流程资源…

有哪些好用的上网行为管理软件?(上网行为管理软件功能好的软件推荐)

随着互联网的快速发展,企业的信息化管理和员工的上网行为已经成为企业信息化建设的重要组成部分。上网行为管理软件作为一种新型的管理工具,可以帮助企业实现对员工上网行为的管控和优化,进而提高企业的工作效率和网络安全。本文将对多款市场…

minio文件上传

1.代码 大佬仓库:https://gitee.com/Gary2016/minio-upload?_fromgitee_search 关于这个代码的讲解:来自b站 2.准备minio 参考:[1]、[2] 2.1 下载 官网:https://min.io/download#/windows 2.2 启动 ①准备一个data文件夹…

树、二叉树、堆及其应用(堆排序、top-k问题)

目录 树的概念与结构 概念: 与树相关的概念: 树的表示: 二叉树 概念: 特殊的二叉树: 二叉树性质: 二叉树的存储结构: 堆 堆的概念: 堆的实现: 堆的创建: 堆的插入: 堆的删…

【算法思想-排序】排序数组-力扣 912 题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

OJ练习第180题——颠倒二进制位

颠倒二进制位 力扣链接:190. 颠倒二进制位 题目描述 颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指…

2023华为杯数学建模研赛E题全解析

2023华为杯数学建模研赛E题解析,完整版已出!!! 包含所有模型、代码、结果,39页技术文档,详细内容如下! 免费版链接已放在下面,需要的同学可以直接自取~ 【云顶数模】2023研究生数学建模免费链接: https://pan.baid…

【Redis】专栏合集,从入门到高级业务场景实战

作者简介 目录 1.概述 2.下载安装 3.基础操作 4.集群 5.实战场景 1.概述 诸如数mysql、Oracle之类的关系型数据库或者NTFS、HDFS之类的文件存储系统,其本质上数据都是存在磁盘上的。这是现代计算机体系架构的架构所决定的,要持久化存储的数据都会落…

卸载Visual Studio 2010学习版 —— 卸载VCExpress

目录 最初安装Visual Studio 2010学习版是因为计算机二级 C语言考试而装,现如今考完试后便可卸载掉了,安装简便而卸载却没有uninstall.exe文件。故本文提供卸载方式。 进入到程序目录,找到setup.exe文件,也可以在程序目录搜索set…

RDMA编程杂记

目录 编程杂记什么是P_Key建链基于Socket API的建链基于CM API的建链 编程杂记 什么是P_Key P_Key(Partition Key)用于提供InfiniBand网络的隔离机制,只有在一个分区内的节点可以互相通信。 P_Key是一个16位的值,有两部分 msb…

CRM客户管理系统英文专业版

外资公司日常沟通的语言以英文为主,业务往来也是涉及到国内外,专业的英文版CRM系统很适合这样的业务团队,尤其CRM供应商是国际化企业,在海外也有分公司、办事处。 多语言 ZOHO支持多语种如英语、汉语、日语等28种语言&#xff0…

Android面试题汇总(三)

Android 四大组件相关 1、Activity与Fragment之间常见的通讯方式 对于Activity与Fragment直接的相互调用: 1、Activity调用Fragment直接调用就好了,Activity一般是持有Fragment实例的。或者通过Fragment的id或者tag获取Fragment的实例 2、Fragment调用A…

攻防世界做题

xff_referer 进来之后显示ip地址必须为123.123.123.123 抓包看一下 要求ip是123.123.123.123 就可以用xff伪造即X-Forwarded-For: 123.123.123.123 得到显示: 说必须来自google,伪造referer Referer: https://www.google.com 我的要在右边的 inspec…

[学习记录] 设计模式 3. 观察者模式

观察者模式 参考: bugstack 虫洞栈Refactoringhttps://www.cnblogs.com/myseries/p/8735490.htmlhttps://www.jianshu.com/p/4f1cd513a72d 当一个行为发生时传递信息给另外一个用户接收做出相应的处理,两者之间没有直接的耦合关联。 在我们编程开发中也…

计算机视觉: 三维物体生成

三维物体生成与编辑 论文地址: Controllable Mesh Generation Through Sparse Latent Point Diffusion Models 背景 数据是目前数字化和AI领域最宝贵的财富之一,但是对于目前的开发者来说,收集数据都意味着极大的成本。所以建立一个高效的生成模型能极…

Java多线程篇(5)——cas和atomic原子类

文章目录 CASAtomic 原子类一般原子类针对aba问题 —— AtomicStampedReference针对大量自旋问题 —— LongAdder CAS 原理大致如下: 在java的 Unsafe 类里封装了一些 cas 的api。以 compareAndSetInt 为例,来看看其底层实现。 可以发现,最…

GPT,GPT-2,GPT-3,InstructGPT的进化之路

ChatGPT 火遍圈内外,突然之间,好多人开始想要了解 NLP 这个领域,想知道 ChatGPT 到底是个什么?作为在这个行业奋斗5年的从业者,真的很开心让人们知道有一群人在干着这么样的一件事情。这也是我结合各位大佬的文章&…

【AIGC】Stable Diffusion Prompt 每日一练0916

一、前言 1.1 写在前面 本文是一个系列,有点类似随笔,每天一次更新,重点就Stable Diffusion Prompt进行专项训练,本文是第022篇《Stable Diffusion Prompt 每日一练0916》。上一篇《Stable Diffusion Prompt 每日一练0915》 1.…