当前位置: 首页 > 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 ~]…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

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

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

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...