亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C++類庫Qt在數(shù)值模擬軟件開發(fā)中的應(yīng)用

        2010-04-12 00:00:00王延紅
        現(xiàn)代電子技術(shù) 2010年2期

        摘 要:介紹調(diào)用C++類庫Qt進(jìn)行數(shù)值模擬軟件開發(fā)的方法。首先介紹Qt及其圖形庫Qwt;其次對脈沖束輻照材料熱力學(xué)效應(yīng)軟件GUI的設(shè)計(jì)做了詳細(xì)說明,并給出數(shù)據(jù)文件的輸入、輸出方法;最后根據(jù)計(jì)算結(jié)果調(diào)用Qwt庫顯示出處理需要的圖形?;赒t的軟件開發(fā)表明:Qt在數(shù)值計(jì)算軟件開發(fā)中具有很強(qiáng)的優(yōu)勢,適合作為數(shù)值計(jì)算軟件GUI開發(fā)的工作平臺。

        關(guān)鍵詞:Qt;數(shù)值模擬軟件;C++;GUI;Qwt

        中圖分類號:TP3919文獻(xiàn)標(biāo)識碼:B

        文章編號:1004-373X(2010)02-080-04

        Application of Qt in Exploitation of Numerical Simulation Software

        YUAN Yuan,WANG Yanhong,JIANG Ling,JIANG Yang

        (Northwest Institute of Nuclear Technology,Xi′an,710024,China)

        Abstract:The exploitation method of numerical analog software based on C++ class libraries Qt is introduced.Firstly,Qt and its graphic libraries Qwt are presented.Secondly,the design of GUI of the impulse radiant material thermodynamics effect software is explained in detail.Thirdly,the input and output means of the data files are given.Finally,the visualization graphics produced by Qwt libraries is shown.During the exploitation of the software,it can be concluded that Qt has more advantages in the development of numerical analog software.So it is suitable to be the development platform of numerical analog software.

        Keywords:Qt;numerical analog software;C++;GUI;Qwt

        0 引 言

        國內(nèi)目前主流的GUI庫是Visual C++自帶的微軟基礎(chǔ)類庫(MFC),由于微軟的商業(yè)考慮使得MFC缺乏平臺無關(guān)性,致使MFC無法適用于跨平臺軟件系統(tǒng)的開發(fā)。而開源的TrollTech Qt類庫則具有極強(qiáng)的平臺無關(guān)性和優(yōu)良的面向?qū)ο筇匦?,在跨平臺軟件系統(tǒng)的開發(fā)中具有絕對優(yōu)勢。

        Qt 是一個(gè)交叉開發(fā)平臺,從某種意義上說,Qt類庫是為幾種不同的操作系統(tǒng)設(shè)計(jì)的。Qt 所有平臺的 API 是一致的,這就意味著在一種平臺上編寫的應(yīng)用程序,在新的平臺上經(jīng)過重新編譯和連接便能運(yùn)行。因此,軟件開發(fā)者只需通過開發(fā)和維護(hù)一種平臺的應(yīng)用源碼,便可開發(fā)出適用于多種平臺的軟件[1]。

        這里簡要介紹Qt類庫及其信號和槽的機(jī)制,結(jié)合脈沖束輻照材料熱力學(xué)效應(yīng)GUI開發(fā)闡述了Qt類庫在數(shù)值模擬軟件開發(fā)中的優(yōu)勢,為探索一條行之有效的跨平臺數(shù)值模擬軟件開發(fā)途徑打下基礎(chǔ)。

        1 Qt類庫簡介

        1.1 Qt類庫簡介

        Qt是挪威TrollTech公司推出的一個(gè)跨平臺的C++圖形用戶界面庫,包括Qt,基于Framebuffer的Qt Embedded,快速開發(fā)工具Qt Designer,國際化工具Qt Linguist等部分。Qt類似于Window上的Motif,Openwin,GTK等圖形界面庫及Windows平臺上的MFC,OWL,VCL,ATL等[2]。Qt還具有下列優(yōu)點(diǎn):

        (1) 優(yōu)良的跨平臺特性。Qt支持下列操作系統(tǒng):Microsoft Windows 95/98,Microsoft Windows NT,Linux,Solaris,SunOS,HP_UX,Digital UNIX(OSF/1,Tru64),Irix,F(xiàn)reeBSD,BSD/OS,SCO,AIX,OS390,QNX等[3]。

        (2) 面向?qū)ο?。Qt良好的封裝機(jī)制使得其模塊化程度非常高,可重用性較好,便于用戶的開發(fā)。Qt提供了一種稱為signals/slots的安全類型來替代回調(diào)callback,這使得各個(gè)元件之間的協(xié)同工作變得十分簡單[4]。

        (3) 豐富的API。Qt包括多達(dá)250個(gè)以上的C++類,還提供基于模板的collections,serialization,file,I/O device,directory management,date/time類,甚至還包括正則表達(dá)式的處理功能。

        (4) 支持2D/3D圖形渲染,支持OpenGL及XML[5]。

        (5) 具有大量的開發(fā)文檔。

        1.2 Qt信號和槽的機(jī)制

        在圖形用戶界面編程中,程序員經(jīng)常希望一個(gè)窗口部件的變化被通知給另一個(gè)窗口部件。更一般地,希望任何一類的對象可以和其他對象進(jìn)行通信。較老的工具包使用一種被稱作回調(diào)的通信方式來達(dá)到這一目的?;卣{(diào)是指一個(gè)函數(shù)指針,如果希望一個(gè)處理函數(shù)通知你一些事件,可以把另一個(gè)函數(shù)(回調(diào))的指針傳遞給處理函數(shù),處理函數(shù)在適當(dāng)時(shí)調(diào)用回調(diào)[6]?;卣{(diào)有兩個(gè)主要缺點(diǎn),首先它們不是類型安全的,編譯系統(tǒng)不能確定處理函數(shù)使用了正確的參數(shù)來調(diào)用回調(diào);其次,回調(diào)和處理函數(shù)是非常強(qiáng)有力地聯(lián)系在一起的,因?yàn)樘幚砗瘮?shù)必須知道要調(diào)用哪個(gè)回調(diào)[7]。

        在Qt中使用一種可以替代回調(diào)的技術(shù)即信號和槽。信號和槽機(jī)制是Qt的一個(gè)主要特征,并且也是它與其他工具包最不相同的部分。Qt的窗口部件有很多預(yù)定義的信號,也可以通過繼承來加入自己的信號,當(dāng)一個(gè)特定事件發(fā)生時(shí),一個(gè)信號即被發(fā)射。槽則是一個(gè)可以被調(diào)用處理特定信號的函數(shù),Qt的窗口部件有很多預(yù)定義的槽,但是通常的習(xí)慣是加入自己的槽,這樣就可以處理自己感興趣的信號,通過信號和槽的連接實(shí)現(xiàn)對象間的通信。信號和槽的機(jī)制是類型安全的:一個(gè)信號的簽名必須與它的接收槽的簽名相匹配。因?yàn)楹灻且恢碌?,編譯器就可以幫助檢測類型是否匹配。信號和槽是寬松地聯(lián)系在一起的,一個(gè)發(fā)射信號的類不需要知道也不需要注意哪個(gè)槽要接收這個(gè)信號。Qt信號和槽的機(jī)制可以保證,如果把一個(gè)信號和一個(gè)槽連接起來,槽就會在正確的時(shí)間使用信號的參數(shù)而被調(diào)用,信號和槽可以使用任何數(shù)量、任何類型的參數(shù),它們是類型安全的,不會再有回調(diào)核心轉(zhuǎn)儲(Core Dump) [8]。

        1.3 Qwt圖形庫簡介

        Qwt類庫是對Qt圖形庫的一種有益的擴(kuò)展,主要是為開發(fā)科學(xué)領(lǐng)域方面的軟件提供實(shí)用的組件庫。Qwt包括各種2D圖形顯示組件及配套的控件,如刻度、旋轉(zhuǎn)體、羅盤、滑尺以及用于相應(yīng)曲線顯示的數(shù)據(jù)類等。Qwt屬于SourceForge下的一個(gè)類庫項(xiàng)目,能夠使用在各種平臺下,包括32 b MSWindows (95/98/NT/2000/XP),POSIX OS (Linux/BSD/Unix_like OSes),OSX等。它的發(fā)布基于Qwt License(Version 1.0)協(xié)議,軟件開發(fā)人員可以在遵守相應(yīng)條例的基礎(chǔ)上,自由地使用它進(jìn)行軟件系統(tǒng)的開發(fā)[9]。

        使用Qwt庫繪制的收音機(jī)的調(diào)節(jié)按鈕、表盤和儀器指針以及二維和三維圖形如圖1和圖2所示,這些圖形完全能夠滿足本軟件數(shù)值計(jì)算結(jié)果的圖形處理需求。

        圖1 利用Qwt庫繪制出的收音機(jī)調(diào)節(jié)

        按鈕、表盤、指南針等儀器指針

        圖2 利用Qwt庫繪制出的二維及三維圖

        2 脈沖束輻照材料響應(yīng)數(shù)值模擬軟件GUI設(shè)計(jì)

        2.1 軟件跨平臺設(shè)計(jì)

        為滿足不同用戶操作系統(tǒng)的要求,同時(shí)為加快開發(fā)速度、縮短開發(fā)周期、減少重復(fù)勞動,使得相同的程序代碼能夠在不同操作系統(tǒng)下編譯,脈沖束輻照材料響應(yīng)軟件的開發(fā)需進(jìn)行跨平臺設(shè)計(jì)。計(jì)算核心代碼采用標(biāo)準(zhǔn)Fortran 90語言編寫,可以滿足跨平臺需求。程序代碼采用C++語言編寫,軟件菜單、參數(shù)輸入界面與后處理圖形輸出需要調(diào)用大量類庫才能實(shí)現(xiàn),采用跨平臺C++類庫Qt是一種非常合適的選擇,基于Qt的圖形庫Qwt則為軟件后處理圖形輸出提供了強(qiáng)有力的支持。

        通過跨平臺C++類庫Qt和基于Qt的圖形庫Qwt設(shè)計(jì)的軟件前后處理GUI,結(jié)合Fortran 90編寫的求解器核心代碼,可以輕松實(shí)現(xiàn)“一次編寫,隨處編譯”的軟件跨平臺設(shè)計(jì)理念,從而使得軟件能夠在不同操作系統(tǒng)下編譯生成相應(yīng)的版本,實(shí)現(xiàn)軟件的跨平臺運(yùn)行。

        2.2 GUI總體框架設(shè)計(jì)

        脈沖束輻照材料響應(yīng)軟件的求解器包括多種求解程序,軟件GUI設(shè)計(jì)需要把這些獨(dú)立的求解程序納入到一個(gè)綜合GUI下。為了使GUI適合多種求解核心,該GUI采用分層設(shè)計(jì),把通用菜單放到最外層,后級菜單逐步根據(jù)不同的求解核心細(xì)化,最終具體到適合各種求解核心的參數(shù)輸入GUI。這種設(shè)計(jì)吸取了多種商業(yè)軟件GUI的優(yōu)點(diǎn),方便了用戶使用,同時(shí)還具有易學(xué)、清晰、簡潔、通用性強(qiáng)等特點(diǎn),可擴(kuò)展為多種求解核心的前后處理GUI。

        2.2.1 主界面

        根據(jù)用戶需求,將主界面劃分為動態(tài)菜單區(qū)、靜態(tài)菜單區(qū)、圖形顯示區(qū)、對話區(qū)和狀態(tài)區(qū)五個(gè)主要部分。動態(tài)菜單區(qū)根據(jù)用戶選擇可動態(tài)產(chǎn)生下級菜單。靜態(tài)菜單區(qū)為固定的若干控制按鈕,主要控制圖形的顯示方式。圖形顯示區(qū)用在后處理中,根據(jù)計(jì)算結(jié)果顯示相應(yīng)的圖形。對話區(qū)顯示程序提示、警告信息和相關(guān)信息,用戶還可在此輸入數(shù)據(jù)或命令。狀態(tài)區(qū)顯示了當(dāng)前正在執(zhí)行的操作或狀態(tài),如前處理輸入數(shù)據(jù)階段、求解器計(jì)算階段或后處理繪圖階段等。

        2.2.2 材料屬性輸入對話框

        由于數(shù)值計(jì)算關(guān)系到若干材料,因此設(shè)計(jì)了材料屬性參數(shù)設(shè)置對話框,如圖3所示。

        圖3 材料屬性參數(shù)設(shè)置對話框

        它分為控制按鈕區(qū)、狀態(tài)方程類型選擇區(qū)、參數(shù)輸入?yún)^(qū)和元素百分含量顯示區(qū)等幾個(gè)主要部分??刂瓢粹o區(qū)包含若干功能按鈕,元素百分含量顯示區(qū)包括組成該材料的各個(gè)元素的元素序號、符號和百分含量值。新建和修改材料時(shí),元素百分含量顯示區(qū)左側(cè)的“元素選擇”按鈕可用,點(diǎn)擊后彈出如圖4所示的元素選擇對話框。該對話框的上半部分為元素周期表,點(diǎn)擊元素所在的相應(yīng)區(qū)域就會彈出對話框,提示用戶輸入當(dāng)前元素的百分含量,輸入完成后,此元素及其百分含量值就會出現(xiàn)在元素含量列表區(qū),同時(shí)動態(tài)地計(jì)算總的百分含量值。

        2.3 GUI的中文化

        Qt包含有很多工具和函數(shù),它們使程序國際化工作即語言翻譯、字符編碼、輸入技術(shù)和顯示轉(zhuǎn)換等變得簡單。利用Qt軟件的國際化功能,該軟件具備中、英文兩種顯示界面。主要實(shí)現(xiàn)步驟如下:

        首先使用QString處理所有用戶可見文本并接受tr()的檢查,因?yàn)镼String內(nèi)部使用Unicode編碼,所以QString能夠處理世界上的所有語言;再運(yùn)行l(wèi)update從應(yīng)用程序的源代碼中提取所有的用戶可視字符串;接下來使用Qt Linguist翻譯應(yīng)用程序;再運(yùn)行l(wèi)release生成二進(jìn)制的.qm文件;最后在應(yīng)用程序開始時(shí)使用Qtranslator加載這個(gè)翻譯文件。這樣,當(dāng)程序運(yùn)行時(shí),就顯示了翻譯后的文字[4]。

        圖4 元素選擇對話框

        2.4 數(shù)據(jù)文件的輸入與輸出

        本軟件的一個(gè)要求就是由界面輸入?yún)?shù),并按照求解器輸入文件格式要求生成一個(gè)數(shù)據(jù)文件,供求解器計(jì)算調(diào)用。其中需要用到文件的讀、寫技術(shù)。寫文件,即把用戶輸入到界面中的參數(shù)數(shù)據(jù)按要求存入文件中;讀文件,即從磁盤上的文件中讀數(shù)據(jù),并顯示到指定控件中。

        讀文件時(shí),先打開文件,通常以IO_ReadOnly“只讀”方式打開文件,再定義一個(gè)QtextStream類的stream對象,然后調(diào)用read()函數(shù)從文件中讀數(shù)據(jù),最后將取得的數(shù)據(jù)賦給相應(yīng)的控件進(jìn)行顯示,如:

        lineEdit1->setText(stream.read());

        為將文件中的所有數(shù)據(jù)賦給編輯框1。

        寫文件時(shí),通常以file.open(IO_WriteOnly)“寫”方式打開文件。該方式會將文件中原來所有的數(shù)據(jù)覆蓋,若不想刪除原有數(shù)據(jù),而是在文件中增加數(shù)據(jù),則還需使用IO_Append方式打開文件,即file.open(IO_WriteOnly|IO_Append)。之后定義一個(gè)QtextStream類的stream對象,再向stream中寫入數(shù)據(jù),如:

        stream <text();

        即為將編輯框1中的數(shù)據(jù)寫入文件。

        執(zhí)行“提交運(yùn)算”命令后產(chǎn)生的指定格式的數(shù)據(jù)文件如圖5所示,求解器根據(jù)此文件即可進(jìn)行運(yùn)算。

        2.5 圖形繪制功能

        軟件后處理要求根據(jù)用戶需求在計(jì)算過程中或計(jì)算結(jié)束后輸出所關(guān)注的物理量的相應(yīng)圖形,以迅速、直觀地查看計(jì)算結(jié)果,必要時(shí)給出動畫顯示。通過調(diào)用Qwt庫,可實(shí)現(xiàn)畫圖功能并嵌入到軟件前后處理GUI中,從而完成計(jì)算結(jié)果的后處理圖形顯示。根據(jù)計(jì)算結(jié)果畫出的曲線圖和光譜圖如圖6,圖7所示。

        圖5 由本輸入界面產(chǎn)生的數(shù)據(jù)文件

        圖6 曲線圖

        圖7 光譜圖

        3 結(jié) 語

        Qt是一個(gè)通用的跨平臺C++類庫,為跨平臺軟件的開發(fā)提供了極佳的工作平臺?;赒t的開源圖形庫Qwt為軟件后處理提供了極大便利。Qt在脈沖束輻照材料熱力學(xué)效應(yīng)軟件GUI開發(fā)中的應(yīng)用表明:Qt在數(shù)值計(jì)算軟件開發(fā)中具有很強(qiáng)的優(yōu)勢,加快了開發(fā)速度;縮短了開發(fā)周期;減少了重復(fù)勞動。其程序代碼無需修改或做較少改動便能夠在不同的操作系統(tǒng)下順利編譯,非常適合作為數(shù)值計(jì)算軟件GUI開發(fā)的工作平臺。

        參考文獻(xiàn)

        [1]祁獻(xiàn)鵬.基于嵌入式Qt的中文GUI平臺的設(shè)計(jì)[D].鄭州:解放軍信息工程大學(xué),2002.

        [2]李銘.三維數(shù)據(jù)場可視化平臺及其關(guān)鍵技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2005.

        [3]聶愛菁,王心豐,崔賽華.在Linux下用Qt開發(fā)新一代DTS圖形數(shù)據(jù)系統(tǒng)的分析與設(shè)計(jì)[J].國外電子元器件,2004(5):12-15.

        [4]王愛文.Linux平臺下基于Qt的電子海圖的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2004.

        [5]張方輝,王建群.Qt/Embedded在嵌入式Linux上的移植[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(7):64-66.

        [6]許德新,談?wù)穹?,高延濱.基于Qt組件庫應(yīng)用程序的生成及其跨平臺實(shí)現(xiàn)[J].東北農(nóng)業(yè)大學(xué)學(xué)報(bào),2006,37(3):373-376.

        [7]鄧飛.基于Qt的地震資料采集質(zhì)量監(jiān)控及評價(jià)系統(tǒng)的開發(fā)與研究[D].成都:成都理工大學(xué),2004.

        [8]宋智寧,姚維.基于Qte通信機(jī)制的GUI系統(tǒng)[J].機(jī)電工程,2007,24(3):77-80.

        [9]楊少鵬.SXD/Linux通信編碼仿真平臺的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2005.

        [10]\\布蘭切尼.C++ GUI Qt 3編程[M].齊亮,譯.北京:北京航空航天大學(xué)出版社,2006.

        [11]于曉,王家禮,宋營坤,等. 基于Qt/Embedded的微波信號發(fā)生器軟件設(shè)計(jì)\\.現(xiàn)代電子技術(shù),2007,30(13):1-3.

        作者簡介

        袁 媛 女,1979年出生,河南鄭州人,工程師。主要研究方向?yàn)檐浖_發(fā)和虛擬仿真。

        王延紅 女,1972年出生,河南淮陽人,碩士研究生,工程師。主要研究方向?yàn)檐浖_發(fā)和科學(xué)計(jì)算可視化。

        江 凌 女,1981年出生,安徽桐城人,碩士研究生,助理工程師。主要研究方向?yàn)檐浖_發(fā)和數(shù)據(jù)庫開發(fā)。

        蔣 陽 男,1982年出生,湖北武漢人,助理工程師。主要研究方向?yàn)檐浖_發(fā)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)。

        亚洲成人免费观看| 无码中文字幕日韩专区| 欧美成人在线视频| 色婷婷七月| 亚洲国产精品亚洲高清| 在线观看午夜视频国产| 亚洲欧美日韩中文字幕一区二区三区| 无码人妻丰满熟妇啪啪7774| 69av视频在线| 蜜桃在线视频一区二区| 国产精品毛片va一区二区三区| 亚洲日韩精品欧美一区二区| 国产一区二区三区爆白浆| 国产在线视频一区二区三区不卡| 天天综合网网欲色| 丁香花在线影院观看在线播放| 欧美中文字幕在线看| 白色月光免费观看完整版| 女人张开腿让男人桶爽| 国产三级在线观看播放视频| 国内精品福利在线视频| 久久精品国产亚洲av日韩一| 日韩狼人精品在线观看| 少妇又色又爽又高潮在线看| 久久精品国产精油按摩| 欧美成人一级视频| 精品亚洲视频免费观看网站| 久久久99精品免费视频| 在线观看免费人成视频色9| 亚洲深夜福利| 亚洲一区二区三区色偷偷| 中国精品18videosex性中国| 国产精品内射后入合集| 男女上床视频免费网站| 国产变态av一区二区三区调教 | 国产suv精品一区二区69| 中文字幕亚洲精品人妻| 成人麻豆视频免费观看| 性色av浪潮av色欲av| 亚洲av成人综合网| 久久久精品国产亚洲麻色欲 |