基于Qt環境下物理實驗數據處理系統的設計與實現
摘要:基于物理實驗數據的處理復雜性與繁瑣性,采用Qt軟件所提供的C++編程環境,進行實驗數據處理軟件開發。以邁克爾遜干涉儀實驗數據處理為實例,設計研發得到一套實驗數據計算分析的處理軟件。可適應邁克爾遜于涉儀實驗數據處理需求,可運行于windows 98、windows 7、Unix等不同平臺,方便各個不同系統地移植使用。其兼容逐差法、最小二乘法等多種不同算法。界面美觀,設計合理,提供了一個通用型實驗數據處理平臺。
本文引用地址:http://www.104case.com/article/201610/307168.htm應用現代軟件科學技術改進傳統實驗,是適應大學物理實驗課程創新發展的需求。研制具有簡潔方便的實驗數據處理工作平臺,應用于繁瑣的物理實驗數據處理中,適應于不同物理參數的測試需求;并且具備有其自身的個性化特點,適合特殊性物理參數測試需求。全篇以邁克爾遜實驗數據處理軟件實例作為個案來展開,具體描述整個軟件的設計與開發。
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的跨平臺特性簡化了移植過程,針對不同的軟件平臺,應用程序只需要一次性開發可實現多次編譯;實驗教學也是一門很重要的學科應用。
評論