【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、总结
也正是因为自己手敲的,出问题也能自己定位了,自己也懂一些东西,明白构成,知道去哪查,要是完全不练习下,拿过来就用,不出问题还好,出了问题都不知道查。
当我们觉得一份组件好用的时候,并将组件嵌入到自己工程内,一定要回来练习下,这像是欠的债一样,只有内会了,练习了,它才会成为你的,你也才能提升。