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

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】

  • 1、概述
  • 2、实验环境
  • 3、参考资料-致谢
  • 4、自我提升+实验效果
      • 视频演示
  • 5、代码练习-学习后拆解-实验步骤
      • (1)头文件部分-"mwaveview.h"
      • (2)cpp文件部分-"mwaveview.cpp"
      • (3)使用部分-"mainwindow.cpp"
  • 6、提升与优化部分讲解
      • (1)设置滑动条,可以手动控制绘图,更有掌控感
      • (2)示波器界面随着整个外框变化。
      • (3)默认选中问题。
  • 7、实验样例代码
  • 8、实验细节-其它问题
      • (4)没图像问题。
      • (5)程序异常关闭问题
  • 9、总结

1、概述

最近因为要使用QT写个带类似示波器的界面,在上网找了相关资料后,质量其实有些参差不齐的,有的看的云里雾里的,有的也只是贴出来代码,真正执行起来时,对于我这种新手来说,还是有点莫不到头脑的,找到一个写的蛮不错的,学习手敲了一遍,并且做了一些优化。

因为仿照表盘排版结构,很多话都是相似,这里不多说什么了。

自己写文章习惯性将所有步骤罗列,将细节说明,也是因为整个流程大量细节,只要按照步骤来,一般能达到效果,但是如果你是针对某个问题感兴趣,那么整篇文章对你来说,文字又有点多,真是难以取舍文字应该写多写少啊~~!

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2
在这里插入图片描述

3、参考资料-致谢

(1)上上周刚刚练习完的代码,这位博主写的不多,但是跟着练习完代码后,觉得效果挺不错,我也是照着他这份代码进行练习的,这里肯定要说下的,也是对其敬意。
参考连接:https://blog.csdn.net/qq_38190041/article/details/118856767

在这里插入图片描述

4、自我提升+实验效果

自己跟着代码练习一遍,然后再输出出来,通过自己理解,复制了一遍示波器,既然跟着学习,总是要有些提高的,我们用这个东西,还是希望当它是一个组件的,装在我们自己的qt工程里,遇到了不少问题,我做了些优化,这里的提升,主要是移植后优化提升与一些问题解决办法,并且尽量说清楚操作步骤。

(1)设置滑动条,可以手动控制绘图,更有掌控感
(2)示波器界面随着整个外壳变化。
(3)默认选中问题。
(4)没图像问题。
(5)程序异常关闭问题

实验效果如下
在这里插入图片描述

视频演示

演示链接:https://live.csdn.net/v/276851?spm=1001.2014.3001.5501

示波器延时

5、代码练习-学习后拆解-实验步骤

(1)头文件部分-“mwaveview.h”

如下图,是文件mwaveview.h,这个文件内都是一些声明定义和函数说明,让我们大致知道有哪些函数。
在这里插入图片描述

(2)cpp文件部分-“mwaveview.cpp”

这里主要是一些函数具体实现了,在构造函数里,进行绘画图标,而其它函数,主要是加入线段。
在这里插入图片描述

(3)使用部分-“mainwindow.cpp”

这部分主要是一些功能使用,以及波形绘制函数,比如设置波形停止以及放大倍数等。

在这里插入图片描述

6、提升与优化部分讲解

(1)设置滑动条,可以手动控制绘图,更有掌控感

这里为了能够自己控制波形,尝试加入一个滑动条,上下滑动,就可以控制通道0的线段进行上下动,从而达到自己控制效果。
在这里插入图片描述

(2)示波器界面随着整个外框变化。

在实际应用过程中,发现”参照资料“博主的样例,示波器是随着整个界面大小变动的,所以对这部分进行优化,也是恰巧上周刚刚弄完仪表盘,会了点提升类,发现提升类还真是个好的方式,自己理解列出下面几条。

1. 某个控件提升类后,这个控件继承了类所有实现函数。
2. 多个控件都提升相同类的话,通过这个控件,直接控制控件。
3. 一些布好局的控件,通过提升类的控件,这个提升类控件也随着布局变化。

上述说的大概什么意思呢,直接用样例来举例就明白了。

(1)如下图所示,按照参照资料之前写法,需要声明一个示波器对象,并且所有功能直接调用对象的方法,现在因为控件提升类了,所以我直接使用类似
== ui->widget->==
这样的方式就可以,同时界面随着改变。
在这里插入图片描述
如下为博主的代码样例对比。
在这里插入图片描述
(2)因为我就弄了一个示波器,这里不存在两个提升类,想了解不同控件都相同提升类,请去找标盘文章看看。

【QT 5 相关实验-仪表盘-学习笔记-表盘组件练习与使用总结】

(3)另外就是因为提升类,随着外框变动这个问题,只要在ui文件里设置一下就可以。
在这里插入图片描述
这里做个对比,我设置了提升类后,拉动外框,内部示波器也会变化,以下为我的样例。
在这里插入图片描述

这里是运行博主样例,可能博主没想到这个细节而已,我这里做了些优化。
在这里插入图片描述

(3)默认选中问题。

这块说明一种实现方式,通过代码设定,如下图。

在这里插入图片描述

7、实验样例代码

样例代码:https://download.csdn.net/download/qq_22146161/87459613

8、实验细节-其它问题

(4)没图像问题。

毕竟是自己手动敲的代码,照葫芦画瓢,碰到了两次,就是不出图形,都是代码没敲对,或者代码位置没对。
在这里插入图片描述

(1)第一次:就少敲了一行代码,说啥也不出,后来发现是在绘图里少了一行.
在这里插入图片描述
(2)第一次是在我手动练习,敲一遍代码过程中,而第二次不出图像,实在移植到自己工程里的时候,发现有不出图形,后来一条条对,发现就是因为函数放错了位置,如下图,函数开始没放到这下面,结果也不出图。
在这里插入图片描述

(5)程序异常关闭问题

这个算是老问题,当时提升类了,应该都用控件来调用方法的,但是忘记删除原有类了,只删除了初始化(new),因为mwaveview.h里声明了,一点控件就崩了,如下图所示,并且qt也不会给你报这个问题。
在这里插入图片描述

9、总结

也正是因为自己手敲的,出问题也能自己定位了,自己也懂一些东西,明白构成,知道去哪查,要是完全不练习下,拿过来就用,不出问题还好,出了问题都不知道查。

当我们觉得一份组件好用的时候,并将组件嵌入到自己工程内,一定要回来练习下,这像是欠的债一样,只有内会了,练习了,它才会成为你的,你也才能提升。

相关文章:

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】1、概述2、实验环境3、参考资料-致谢4、自我提升实验效果视频演示5、代码练习-学习后拆解-实验步骤(1)头文件部分-"mwaveview.h"(2)cpp文件部分-"mwav…...

二维数组中的查找(两种解法,各有千秋)

凡事都有可能,永远别说永远。——《放牛班的春天》今天一题为再一个行列都有序的二维数组中寻找一个目标值,我们第一时间想到的可能是很暴力的解法,例如从头到尾进行遍历,这样能做出来,但是借用武忠祥老师的一句话&…...

quartz使用及原理解析

quartz简介 ​ Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能: 持久性作业 - 就是保持调度…...

Datawhale组队学习:大数据 D2——分布式文件系统(HDFS)

妙趣横生大数据 Day2三、Hadoop 分布式文件系统(HDFS)1. 分布式文件系统2. HDFS 简介3. HDFS 体系结构4. HDFS存储原理数据冗余存储数据存储策略数据错误与恢复5. HDFS数据读写过程读写过程HDFS故障类型和其检测方法HDFS编程实验1. 本地和集群文件间操作2. 基本文件操作3. Hado…...

CCIE重认证-300-401-拖图题全

拖图 拖图题 编程 snippet;192.168.5.0,mask 255.255.255.0;number是192.168.5.0;mask是255.255.255.0 snippets;edit-config对config,loopback对name 100,address对primary,mask…...

如何动态的创建类?type的其他用法?什么是元类,如何自定义元类?

1、python中一切都是对象,类也不例外,type是object的子类,是创建类的类。 如何动态的创建一个类? 用脚丫子创建 用脑子创建 不会 不知道什么事动态类 大家可能会有一堆的疑惑,是的我也是有很多疑惑那让我们一起来探个…...

XCP实战系列介绍15-XCP故障排查指导

本文框架 1.概述2. 通过调试器排查2.1 打开Det功能2.2 如何确定Det ErrorCode3. 通过XCP应答报文排查3.1 FE报文组成及故障码对应关系3.2 举个例子1.概述 前面几篇文章我们介绍了基于Davinci开发工具的XCP配置指导,配好了,代码也生成了,但是程序一定能正常跑起来吗?就算软…...

吉林大学软件需求分析与规范(Software Requirements Analysis Specification)

chapter0课程简介:◼ 软件工程专业核心课程之一◼ 软件工程课程体系最前端课程◼ 主要内容:需求的基本概念,需求的分类,需求工程的基本过程,需求获取的方法、步骤、技巧,需求分析和建模技术,需求…...

PyTorch - Conv2d 和 MaxPool2d

文章目录Conv2d计算Conv2d 函数解析代码示例MaxPool2d计算函数说明卷积过程动画Transposed convolution animationsTransposed convolution animations参考视频:土堆说 卷积计算 https://www.bilibili.com/video/BV1hE411t7RN 关于 torch.nn 和 torch.nn.function t…...

leetcode Day2(昨天实习有点bug,心态要崩了)

int carry 0;for(int i a.size() - 1, j b.size() - 1; i > 0 || j > 0 || carry; --i, --j) {int x i < 0 ? 0 : a[i] - 0;int y j < 0 ? 0 : b[j] - 0;int sum (x y carry) % 2;carry (x y carry) / 2;str.insert(0, 1, sum 0);}return str;加一&a…...

另一种思考:为什么不选JPA、MyBatis,而选择JDBCTemplate

以下内容转载自&#xff1a;https://segmentfault.com/a/1190000018472572 作者&#xff1a;scherman 因为项目需要选择数据持久化框架&#xff0c;看了一下主要几个流行的和不流行的框架&#xff0c;对于复杂业务系统&#xff0c;最终的结论是&#xff0c;JOOQ是总体上最好的…...

LeetCode 338. 比特位计数

给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --> …...

排序评估指标——NDCG和MAP

在搜索和推荐任务中&#xff0c;系统常返回一个item列表。如何衡量这个返回的列表是否优秀呢&#xff1f; 例如&#xff0c;当我们检索【推荐排序】&#xff0c;网页返回了与推荐排序相关的链接列表。列表可能会是[A,B,C,G,D,E,F],也可能是[C,F,A,E,D]&#xff0c;现在问题来了…...

[Android Studio] Android Studio Virtual Device(AVD)虚拟机的功能试用

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f680;write…...

kafka-3-kafka应用的核心要点和内外网访问

kafka实战教程(python操作kafka)&#xff0c;kafka配置文件详解 Kafka内外网访问的设置 1 kafka简介 根据官网的介绍&#xff0c;ApacheKafka是一个分布式流媒体平台&#xff0c;它主要有3种功能&#xff1a; (1)发布和订阅消息流&#xff0c;这个功能类似于消息队列&#x…...

VS2017+OpenCV4.5.5 决策树-评估是否发放贷款

决策树是一种非参数的监督学习方法&#xff0c;主要用于分类和回归。 决策树结构 决策树在逻辑上以树的形式存在&#xff0c;包含根节点、内部结点和叶节点。 根节点&#xff1a;包含数据集中的所有数据的集合内部节点&#xff1a;每个内部节点为一个判断条件&#xff0c;并且…...

Prometheus 记录规则和警报规则

前提环境&#xff1a; Docker环境 涉及参考文档&#xff1a; Prometheus 录制规则Prometheus 警报规则 语法检查规则 promtool check rules /path/to/example.rules.yml一&#xff1a;录制规则语法 groups 语法&#xff1a; groups:[ - <rule_group> ]rule_group…...

(API)接口测试的关键技术

接口测试也就是API测试&#xff0c;从名字上可以知道是面向接口的测试活动。所以在讲API测试之前&#xff0c;我们应该说清楚接口是什么&#xff0c;那么接口就是有特定输入和特定输出的一套逻辑处理单元&#xff0c;而对于接口调用方来说&#xff0c;不用知道自身的内部实现逻…...

快速排序算法原理 Quicksort —— 图解(精讲) JAVA

快速排序是 Java 中 sort 函数主要的排序方法&#xff0c;所以今天要对快速排序法这种重要算法的详细原理进行分析。 思路&#xff1a;首先快速排序之所以高效一部分原因是利用了离散数学中的传递性。 例如 1 < 2 且 2 < 3 所以可以推出 1 < 3。在快速排序的过程中巧…...

linux环境搭建私有gitlab仓库

搭建之前&#xff0c;需要安装相应的依赖包&#xff0c;并且要启动sshd服务(1).安装policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]# sudo yum install -y curl policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]…...

SpringBoot项目快速集成Taotoken多模型API的完整教程

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 SpringBoot项目快速集成Taotoken多模型API的完整教程 对于使用SpringBoot框架的Java开发者而言&#xff0c;接入不同的大模型服务通…...

5分钟快速搭建零配置静态服务器:http-server终极完整指南

5分钟快速搭建零配置静态服务器&#xff1a;http-server终极完整指南 【免费下载链接】http-server A simple, zero-configuration, command-line http server 项目地址: https://gitcode.com/gh_mirrors/ht/http-server 你是否曾在本地开发时&#xff0c;为了预览一个简…...

车载毫米波雷达性能验证(1)_基于雷达模拟器的目标检测精度与可靠性测试

1. 车载毫米波雷达性能验证的核心逻辑 第一次接触车载毫米波雷达测试时&#xff0c;我被各种专业术语搞得晕头转向。直到后来才发现&#xff0c;性能验证的本质就是回答两个问题&#xff1a;测什么和怎么测。这就像买手机要关注摄像头像素和跑分一样&#xff0c;雷达测试也要抓…...

LabVIEW架构演进:从数据流到混合计算与云原生的未来

1. 项目概述&#xff1a;从一次访谈看LabVIEW的架构演进最近&#xff0c;我偶然看到一篇关于LabVIEW之父Jeff Kodosky的访谈&#xff0c;他谈到了LabVIEW未来软件架构的构想。作为一名在测控领域摸爬滚打了十多年的工程师&#xff0c;这个话题瞬间就抓住了我的眼球。LabVIEW&am…...

LaTeX中文排版难题:如何快速解决字体缺失问题?

LaTeX中文排版难题&#xff1a;如何快速解决字体缺失问题&#xff1f; 【免费下载链接】latex-chinese-fonts Simplified Chinese fonts for the LaTeX typesetting. 项目地址: https://gitcode.com/gh_mirrors/la/latex-chinese-fonts 你是否曾经在深夜赶论文时&#x…...

5个技巧打造个性化Obsidian笔记界面:AnuPpuccin主题美化指南

5个技巧打造个性化Obsidian笔记界面&#xff1a;AnuPpuccin主题美化指南 【免费下载链接】AnuPpuccin Personal theme for Obsidian 项目地址: https://gitcode.com/gh_mirrors/an/AnuPpuccin 还在为单调的笔记界面而烦恼吗&#xff1f;想要让你的Obsidian笔记软件焕然一…...

三自由度机械臂运动学建模与求解:从DH参数到算法验证

1. 三自由度机械臂运动学基础 刚接触机械臂控制时&#xff0c;我最头疼的就是运动学建模这部分。三自由度机械臂虽然结构简单&#xff0c;但要把它的运动规律用数学语言描述清楚&#xff0c;需要建立完整的理论框架。运动学主要研究机械臂末端执行器的位置、速度和加速度与各关…...

【故障诊断】DSCNN-HA-TL:融合Swin窗口注意力和全局注意力机制的变工况轴承故障诊断(迁移学习/小样本)

在工业旋转机械中&#xff0c;滚动轴承是最关键、也最容易发生故障的部件之一。然而&#xff0c;变工况、故障样本稀缺、跨域泛化能力差三大难题&#xff0c;长期制约着故障诊断模型的落地效果。 近期&#xff0c;来自河北工程大学、天津大学等机构的研究团队提出了一种全新的…...

MusicGPT:基于大语言模型的AI音乐导师项目架构与实现

1. 项目概述&#xff1a;当AI成为你的私人音乐导师最近在GitHub上看到一个挺有意思的项目&#xff0c;叫gabotechs/MusicGPT。光看名字&#xff0c;你可能会觉得这又是一个用GPT来生成音乐旋律或者歌词的玩具。但实际深入进去&#xff0c;你会发现它的野心和实用性远超想象。它…...

程序员,真要失业了:Claude Code新增/goal指令,一个命令,AI替你干完整个项目

最近&#xff0c;GitHub上发生了一件小事。 一个全美排名Top 5的软件工程师&#xff0c;发了一条帖子&#xff0c;只有三句话&#xff1a; “我用/goal重构了一个3万行的遗留项目&#xff0c;花了4小时。” “没有人盯着我&#xff0c;没有PR被拒&#xff0c;没有半夜爬起来看…...