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

news2024/10/5 23:50:30

基于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.coloradmin.cn/o/1011887.html

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

相关文章

文案生成-帮助我们应对文案创作过程中的痛点

在数字化时代,文案生成变得前所未有的重要。从广告营销到社交媒体发布,从网站内容到产品描述,文案无处不在,它们不仅仅是文字的组合,更是一种引导、影响和唤起共鸣的力量。然而,随着文案需求的不断增长&…

云计算——ACA学习 云计算分类

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 一.云计算分类 1.公有云…

【Anaconda】管理你的环境和包

Anaconda 管理环境与包 管理环境管理包 管理环境 查看环境 conda env list激活环境 # enname 替换为要激活的环境名称 conda activate envname创建环境 # myenv 为创建的环境的名称 # python3.8 为指定环境中py版本为3.8 conda create --name myenv python3.8删除环境 # myenv …

【web开发】8、Django(3)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、管理员1.表结构2.layout.html文件下添加管理员账号的导航3.urls.py文件(POST请求传递nid)4.form.py文件(密码加密,确认密…

辉瑞与吉利德科学:制药巨头的新冠病毒之战

来源:猛兽财经 作者:猛兽财经 总结: (1)猛兽财经认为,华尔街低估了辉瑞(PFE)和吉利德科学(GILD)的前景,因为它们在开发新冠病毒疫苗和药物方面都…

安达发|APS软件系统的发展进化史

从古至今,生产计划一直是制造业的核心。无论是古代的手工作坊,还是现代的自动化工厂,都需要一种有效的方法来安排和调度生产活动。这就是我们今天要谈论的主题——高级排产软件(APS)的起源和发展。 1. 初识APS&#xf…

碳化硅夹阻整流器(PBR)

标题:Silicon Carbide Pinched Barrier Rectifier (PBR) 摘要 本文首次提出一种碳化硅(SiC)中的新型整流器结构。所提出的结构既不涉及肖特基接触也不涉及通过P-N结的少数载流子注入。当相邻的P区域放置得足够近时,形成了用于整流…

C语言练习题解析:挑战与突破,开启编程新篇章!(4)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

药店销售系统设计与实现

目 录 摘要 Ⅰ Abstract Ⅱ 第1章 绪论 1 1.1选题意义 1 1.1.1选题背景 1 1.1.2选题意义 1 1.2系统方案 1 1.3可行性分析 1 1.3.1技术可行性分析 1 1.3.2经济可行性分析 1 第2章 系统主要功能及界面设计 3 2.1系统功能分析 3 2.1.1系统功能分析 3 2.1.2 数据库结构设计 4 2.2界…

Centos7 禁止ping的几种方式

参考链接 https://cloud.tencent.com/developer/article/1448499 1. #禁ping echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #启用ping echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all#编辑配置 vim /etc/sysctl.conf #设置禁ping(如果有此配置就无…

GDB之常见缩写命令(十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

基于安卓Java试题库在线考试系统uniapp 微信小程序

本文首先分析了题库app应用程序的需求,从系统开发环境、系统目标、设计流程、功能设计等几个方面对系统进行了系统设计。开发出本题库app,主要实现了学生、教师、测试卷、试题、考试等。总体设计主要包括系统功能设计、该系统里充分综合应用Mysql数据库、…

5.4双积分ADC工作原理

文章目录 1、高中几个知识点exp(n)log(n)lgx、lnx电容充放电公式 2、双积分型ADC工作原理3、SAR和∑-Δ型模数转换器(ADC) 1、高中几个知识点 exp(n) exp函数即指数函数:e的n次方的函数,自然常数e2.718281828459045 举例: exp(0) e 0 e^{…

MQ 异步削峰解耦 交换机与队列

MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信,解耦 作用(这是个面试题) 1、异步处理 场景说明:用户注册后,需要发注册邮件…

高压放大器在mems传感器中的应用有哪些

高压放大器在MEMS传感器中具有广泛的应用。MEMS传感器是一种能够将微小机械运动转化为电信号的微型传感器,其应用涵盖了多个领域,包括汽车、医疗、消费电子等。而高压放大器则是用于增强MEMS传感器输出信号的设备,可以提供更高的增益和更低的…

二、链表(linked-list)

文章目录 一、定义二、经典例题(一)[21.合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/description/)1.思路2.复杂度分析3.注意4.代码 (二)[86.分割链表](https://leetcode.cn/problems/partition-list…

批量BMP图片转为PNG透明图片,去掉BMP黑色背景,压缩导出png图片V1.1

前段时间上传了一款bmp转png并去黑底的demo软件,非常受欢迎, 旧版软件介绍文章:批量BMP图片转为PNG透明图片,去掉BMP黑色背景 应广大爱好者的要求,完善了一下软件的功能,增加了导出png图片压缩功能&#x…

本地部署CodeLlama +GTX1080显卡 对接open-interpreter对接wxbot(一)

1.效果展示 开源项目GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Supports transformers, GPTQ, llama.cpp (GGUF), Llama models. "Code Llama" 是一个大型代码语言模型的系列,基于 "Llama 2" 构建,为编程…

【LeetCode-简单题】剑指 Offer 05. 替换空格

文章目录 题目方法一:常规做法:方法二:双指针做法 题目 方法一:常规做法: class Solution {public String replaceSpace(String s) {int len s.length() ;StringBuffer str new StringBuffer();for(int i 0 ; i &l…

JColorChooser 和JFileChooser

语雀笔记:https://www.yuque.com/huangzhanqi/rhwoir/paaoghdyv0tgksk1https://www.yuque.com/huangzhanqi/rhwoir/paaoghdyv0tgksk1Java图形化界面: Java图形化界面学习demo与资料 (gitee.com)https://gitee.com/zhanqi214/java-graphical-interface Swing提供了J…