基于Qt环境下物理实验数据处理系统的设计与实现
扫描二维码
随时随地手机看文章
摘要:基于物理实验数据的处理复杂性与繁琐性,采用Qt软件所提供的C++编程环境,进行实验数据处理软件开发。以迈克尔逊干涉仪实验数据处理为实例,设计研发得到一套实验数据计算分析的处理软件。可适应迈克尔逊于涉仪实验数据处理需求,可运行于windows 98、windows 7、Unix等不同平台,方便各个不同系统地移植使用。其兼容逐差法、最小二乘法等多种不同算法。界面美观,设计合理,提供了一个通用型实验数据处理平台。
应用现代软件科学技术改进传统实验,是适应大学物理实验课程创新发展的需求。研制具有简洁方便的实验数据处理工作平台,应用于繁琐的物理实验数据处理中,适应于不同物理参数的测试需求;并且具备有其自身的个性化特点,适合特殊性物理参数测试需求。全篇以迈克尔逊实验数据处理软件实例作为个案来展开,具体描述整个软件的设计与开发。
Qt作为系统开发的环境,具有不可替代的优势。Qt提供的C++应用程序开发框架,可以轻松实现“一次编写,随处编译”的跨平台解决方案,编写的应用程序能完美运行于从windows 98到windows 7,从Mac OSX到Linux,从Solaris,HP—UX到其他基于X11的众多Unix平台上。这让编写的应用程序可以运行在不同的系统,方便移植,甚至能够在经过简单的修改后轻松移植至应用广泛的android平台。Qt设计师是强大的跨平台GUI布局和格式构建器。
同时Qt是一个跨平台的图形用户界面应用程序开发的C++工具箱。它提供给应用程序开发者建立艺术级的图形用户界面所需的各种功能,从而直观的对可视化用户交互界面进行设计。Qt是完全面向对象的,易于扩展,并且允许真正地组件编程。
1 实验原理简介
迈克尔逊干涉仪实验原理如图1所示,从光源S发出的光线经半反射镜的反射和透射后分为两束光线,一束向上一束向右,向上的光线又经C反射回来,向右的光线经补偿板后被反射镜D反射回来在半反射镜处被再次反射向下,最后两束光线在观察屏上相遇,产生干涉。干涉仪的整体结构如图2所示,图中1~16为仪器上各个部件的数字编号,可查询相关资料。
2 系统软件总架构
软件功能的实现依靠3种机制:C++面向对象编程机制,Qt的信号与槽机制,Qt的事件机制。
Qt编程是由C++体系实现,面向对象的编程方法和Qt丰富的类库,使用户能够更简单灵活的实现各种功能。在QtCreator的帮助模式下,可以查询所有类的信息。应用这种机制,可以使程序结构灵活,层次感强。
软件整体构架包括主界面与启动界面两大部分构成。学生在做完相应的迈克尔逊干涉实验后,即可启动软件,进行数据输入与计算。在数据的输入过程辨清环变数与数据组数,使用不同算法进行数据处理,采用二者比较精确值,操作简便和人性化。系统构架图如图3所示。
其中qidong.cpp类下提供的软件信息包括软件版本号,开发作者,开发日期等并且添加图片使界面更为美观。log.cpp提供包括学生信息录入,和学号信息验证提示等功能。mainwindow.cpp提供的主程序界面内容及其所包含的两个核心文件,zuixiao.cpp和zhucha.cpp这是该软件主要算法程序最小二乘法和逐差法包括它们相应的误差计算方法。最后mvedit.cpp是界面美观与焦点等复合问题处理。
3 界面设计与布局优化
3.1 启动界面优化
1)布局优化:启动程序,进入启动界面,界面出现版本号,开发作者等信息优化布局。
2)界面美观:在Qt样式表中添加相应的彩图达到美观界面的效果。
3.2 登陆界面设计
1)登陆信息:进入启动界面4~5秒后,出现登陆界面,包括学生学号信息录入和身份验证。
2)错误警示:如果学生未录入信息将不能进入主程序,出现警示窗口。在这里体现到了Qt中最为核心的信号与槽的关键应用。通过信号和槽的应用实现各个界面和数据等的传递。比如,点击按钮“关闭窗口”就会发出一个信号,对应的槽函数close()会被调用以响应这个信号。这种机制使部件与部件,部件与后台,部件与其他窗口,窗口与窗口之间可以进行交流。
3.3 主界面布局设计
为了方便师生们对本物理实验数据处理系统的使用,提升用户体验,需要对主界面进行合理的布局与适当的美化。在窗口组件的分布方面,采用左右布局使界面更加紧凑。而在对窗口组件的美化方面,首先添加资源文件,然后使用其设计面下的Qt样式表,修改界面中的文字格式和添加彩图等功能对主界面进行美观优化。
例如:为了对文字做美化处理,在Qt更改样式中添加如下代码
QPushButton{ffbnt:75 18pt“华文楷体”;color:rgb(0,0,255);}
从而对按钮进行美化处理,将字体变为楷体,调整其大小,并且改变按钮字体颜色为蓝色,从而让使用者身心更为愉悦。
3.4 焦点光标的可控性
在实际使用中,由于本实验数据个数相对较多,因此简化对于焦点光标的控制十分重要。
故定义继承自LineEdit类的自定义类QMyEdit,在类内以链表形式建立对象间顺序的逻辑关系。
类定义头文件qMyEdit.h如下
而后将LineEdit类的文本框对象提升为QMyEdit类,并重写QMyEdit类的默认键盘事件函数,捕捉上/下方向键的输入,并按顺序移动文本框焦点,从而实现对焦点光标的便捷控制,简化使用时的输入操作。
键盘事件函数重写方式如下
3.5 双算法的实现与变量数据的可控性
1)多种算法综合实现:mainwindow类下有两个程序zuixiao.cpp和zhucha.cpp,分别执行该软件的两种核心算法:最小二乘法和逐差法,并计算两种算法相应的误差。逐差法在数据处理中较为普遍,而最小二乘法则是利用呈线性关系的两组数据拟合为直线,在本实验的数据处理中只需获取其斜率及误差。
两种算法的综合应用是一个较为新颖的数据处理方法。学生的实验数据输入后,通过信号和槽的应用,将数据从主界面传递至计算部分,在处理完毕后再将结果返回主界面并显示。同时显示两种方法的结果与其对应误差,增强计算结果的可信度。
2)数据可控的实现:数据可控是指对实验数据的个数和实验中两次获取数据的间隔间光屏上环数的改变数进行控制,从而不为单一的实验数据获取方式所局限。在主界面上放置两个spin部件,用以改变输入数据个数和环的变化个数,同时允许通过鼠标点击改变数据大小。在实验时可以根据实际情况改变数据组数与环的变化个数,从而扩大软件的适用范围。
4 实验测试与反馈
通过对多组不同的数据对软件进行测试,并改变数据组数与变化环数,将软件计算结果与传统计算结果比较,结果完全吻合。
在有效数字保留方面保持了前后一致,确保数据处理的精确度。
5 结束语
1)软件投入到实验教学中后,得到了广大师生的一致好评。方便了学生对于繁琐数据的处理,学生在实验方面积极性与活跃性得到了一定程度的提高。同时也使得教师在教学方面得到了相当大的帮助,提升了教学质量。
2)在本软件中通过对所有用户可见的文本使用QString,对动态文本使用QString::arg()函数,对所有文字文本使用tr()函数来实现国际化。
3)Qt完全面向对象,方便了系统的开发。Qt的跨平台特性简化了移植过程,针对不同的软件平台,应用程序只需要一次性开发可实现多次编译;实验教学也是一门很重要的学科应用。