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

        ?

        基于Qt的專(zhuān)用有限元軟件GUI模塊的設(shè)計(jì)與開(kāi)發(fā)

        2020-01-14 06:03:28王曉輝聶小華
        關(guān)鍵詞:用戶(hù)界面界面有限元

        王曉輝 聶小華 常 亮

        (中國(guó)飛機(jī)強(qiáng)度研究所 陜西 西安 710065)

        0 引 言

        隨著信息技術(shù)的發(fā)展,以有限元法[1]為主體的分析技術(shù)已成為產(chǎn)品結(jié)構(gòu)設(shè)計(jì)過(guò)程中進(jìn)行強(qiáng)度分析與性能評(píng)定的標(biāo)準(zhǔn)流程之一。按照工業(yè)軟件的適用范圍和功能需求來(lái)說(shuō),有限元軟件包含兩大類(lèi):通用軟件和專(zhuān)用軟件。其中通用有限元軟件大多屬于商業(yè)軟件,不僅價(jià)格昂貴和技術(shù)封鎖,且在實(shí)際應(yīng)用中需要通過(guò)二次開(kāi)發(fā)和不定期投資維護(hù),因而開(kāi)發(fā)自主產(chǎn)權(quán)的專(zhuān)用有限元軟件成為當(dāng)下適合工程應(yīng)用和規(guī)避科研風(fēng)險(xiǎn)的必然選擇。在功能劃分和組成方面,有限元軟件包含三部分:前處理、求解器和后處理。在整個(gè)分析過(guò)程中,前后處理占據(jù)了80%的時(shí)間,包括有限元模型的構(gòu)建、物理屬性的定義及模型的可視化分析,整個(gè)過(guò)程緊密融合了用戶(hù)的需求。通過(guò)調(diào)研發(fā)現(xiàn),目前國(guó)內(nèi)外對(duì)于專(zhuān)用有限元軟件的開(kāi)發(fā),大多數(shù)集中于求解算法效率的提升和計(jì)算理論的推導(dǎo)等方面,而忽視了軟件用戶(hù)界面的友好交互性。設(shè)計(jì)一個(gè)友好交互的面向工程需求的圖形用戶(hù)界面GUI,將給有限元分析的前后處理工作帶來(lái)極大的方便,大大改善軟件的整體性能。GUI模塊作為開(kāi)發(fā)其他專(zhuān)用軟件的起點(diǎn),在軟件設(shè)計(jì)開(kāi)發(fā)過(guò)程中扮演重要角色[2]。

        傳統(tǒng)的有限元軟件開(kāi)發(fā)往往更關(guān)注軟件功能的實(shí)現(xiàn)而忽略了軟件的用戶(hù)體驗(yàn)。但隨著計(jì)算機(jī)軟硬件技術(shù)的飛速發(fā)展,用戶(hù)對(duì)于有限元軟件的可操作性、擴(kuò)展性、跨平臺(tái)性、美觀性等方面提出了更高的要求。從而軟件用戶(hù)界面的設(shè)計(jì)也越來(lái)越受到開(kāi)發(fā)人員的重視,但具體實(shí)現(xiàn)中難度也很大。比如ANSYS等商業(yè)軟件,每幾年都會(huì)通過(guò)用戶(hù)體驗(yàn)反饋,進(jìn)行版本提升,但提供的用戶(hù)界面至今仍未令人很滿(mǎn)意[3],尤其是在用戶(hù)友好性方面存在一定的局限性。再如主流的PATRAN、ABAQUS CAE等軟件,雖然擁有眾多的用戶(hù)群體,但由于特有的用戶(hù)界面設(shè)計(jì),固化了用戶(hù)的使用習(xí)慣,使得國(guó)內(nèi)工程應(yīng)用依賴(lài)于國(guó)外軟件,一定程度上阻礙了國(guó)產(chǎn)自主CAE軟件的發(fā)展和推廣。在國(guó)內(nèi),早期的國(guó)內(nèi)學(xué)者對(duì)軟件用戶(hù)界面的設(shè)計(jì)更多聚焦于界面設(shè)計(jì)原則和方法理論的闡述[4],對(duì)于程序?qū)崿F(xiàn)層面的描述不是很多。對(duì)于有限元軟件的用戶(hù)界面的開(kāi)發(fā)形式大致包括:基于商業(yè)軟件二次開(kāi)發(fā)[5]、開(kāi)源程序的封裝集成和[6-7]和針對(duì)特定應(yīng)用場(chǎng)景的用戶(hù)界面程序設(shè)計(jì)與開(kāi)發(fā)[8-10]。其中二次開(kāi)發(fā)和開(kāi)源程序封裝入門(mén)難度較大,開(kāi)發(fā)成本較高;特定功能的軟件用戶(hù)界面設(shè)計(jì)開(kāi)發(fā)需求明確,更能滿(mǎn)足用戶(hù)和計(jì)算系統(tǒng)多方面的要求。因此,通過(guò)自主開(kāi)發(fā)構(gòu)建跨平臺(tái)的友好的專(zhuān)用有限元軟件的圖形用戶(hù)界面成為了國(guó)產(chǎn)有限元軟件開(kāi)發(fā)的最佳選擇。

        經(jīng)過(guò)調(diào)研發(fā)現(xiàn),目前主流的GUI設(shè)計(jì)工具有MFC、Qt、wxWidget以及Gnome。其中MFC和Gnome不能跨平臺(tái),不可移植。真正跨平臺(tái)的只有Qt和wxWidget,但是wxWidget目前缺乏專(zhuān)業(yè)維護(hù)和技術(shù)支持,無(wú)法滿(mǎn)足客戶(hù)需求。Qt作為一個(gè)非常優(yōu)秀的面向?qū)ο蟮目缙脚_(tái)圖形開(kāi)發(fā)框架,有很強(qiáng)的擴(kuò)展性,支持組件編程[12]。為此,本文結(jié)合航空結(jié)構(gòu)強(qiáng)度分析流程,以用戶(hù)需求為中心[13-14],采用多窗口界面(MDI)設(shè)計(jì)方式,基于Qt技術(shù)在Windows操作系統(tǒng)下進(jìn)行專(zhuān)用有限元軟件用戶(hù)界面的設(shè)計(jì)與開(kāi)發(fā),最后結(jié)合HAJIF基礎(chǔ)求解平臺(tái)驗(yàn)證應(yīng)用。

        1 HAJIF系統(tǒng)介紹

        HAJIF全名為航空結(jié)構(gòu)強(qiáng)度分析與優(yōu)化設(shè)計(jì)軟件系統(tǒng),它是由中國(guó)飛機(jī)強(qiáng)度研究所歷經(jīng)了多年艱辛探索與突破,研制推出的一款國(guó)內(nèi)航空領(lǐng)域功能最完善的自主CAE軟件系統(tǒng),涵蓋了飛行器結(jié)構(gòu)分析、優(yōu)化設(shè)計(jì)、氣動(dòng)彈性和強(qiáng)度校核等多種功能。尤其在最近幾年,HAJIF計(jì)算系統(tǒng)在求解規(guī)模效率方面有了很大提升,已廣泛應(yīng)用于航空、航天、交通和武器裝備等領(lǐng)域[15-19]。

        2 有限元軟件GUI設(shè)計(jì)方法

        鑒于有限元軟件主要解決和分析大而復(fù)雜的科學(xué)和工程問(wèn)題,具有復(fù)雜和異構(gòu)的數(shù)據(jù)類(lèi)型,從而要求其對(duì)用戶(hù)界面的設(shè)計(jì)必須遵循簡(jiǎn)便性、直接性、可控性、美觀性、反饋性、標(biāo)準(zhǔn)化和一致性的原則,同時(shí)可面向多層次用戶(hù)需求。

        為了更好地完成用戶(hù)界面的設(shè)計(jì),通過(guò)調(diào)研當(dāng)下商業(yè)有限元軟件界面的元素構(gòu)成,結(jié)合有限元分析流程,有限元軟件系統(tǒng)的GUI除了考慮文件的管理、前處理、與求解器的數(shù)據(jù)關(guān)聯(lián)、后處理結(jié)果顯示等功能外,還需要添加常用工具、動(dòng)態(tài)語(yǔ)言切換和幫助文檔等新的功能。同時(shí),針對(duì)有限元軟件中多個(gè)功能模塊之間“高內(nèi)聚,低耦合”的特性,為了有效降低軟件編制的復(fù)雜度,提高軟件模塊的維護(hù)性和可移植性,在此采用多窗口界面(MDI) 設(shè)計(jì)方式,實(shí)現(xiàn)單一主窗口和多個(gè)子窗口的數(shù)據(jù)管理[20-21]。其中,有限元軟件主界面的總體框架如圖1所示。

        圖1 有限元軟件主界面總體框架圖

        結(jié)合有限元分析流程,有限元軟件的基本操作步驟如圖2所示。在有限元軟件操作過(guò)程中,用戶(hù)可實(shí)時(shí)通過(guò)幫助菜單獲取幫助信息,通過(guò)語(yǔ)言設(shè)置菜單實(shí)現(xiàn)界面語(yǔ)言動(dòng)態(tài)切換,通過(guò)快捷工具欄實(shí)現(xiàn)特殊操作功能等。

        圖2 有限元軟件主要操作步驟

        根據(jù)以上設(shè)計(jì)思路,可以得到有限元軟件主界面中的區(qū)域分配和界面元素布局,如圖3所示包含主窗口和基本的界面元素,如菜單欄、工具欄、狀態(tài)欄、數(shù)據(jù)視窗和模型樹(shù)等。

        圖3 有限元軟件主界面區(qū)域分配和元素布局

        3 有限元軟件GUI設(shè)計(jì)中的Qt技術(shù)

        本文在設(shè)計(jì)過(guò)程中主要采用Qt和C++作為開(kāi)發(fā)環(huán)境。由于軟件用戶(hù)界面存在大量人機(jī)交互操作,因此對(duì)于數(shù)據(jù)通信效率有很高的要求。其中Qt的信號(hào)槽機(jī)制是類(lèi)型安全且松散耦合的,已逐漸替代了傳統(tǒng)的回調(diào)函數(shù),使得數(shù)據(jù)信號(hào)的傳遞更安全高效。此外,Qt 中集合了強(qiáng)大的類(lèi)庫(kù),具有豐富的API,可支持對(duì)圖形、文本、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、I/O及視圖控件等的操作。因此在有限元軟件用戶(hù)界面設(shè)計(jì)中,Qt開(kāi)發(fā)框架能夠很好地滿(mǎn)足軟件多接口、多響應(yīng)、多元素、個(gè)性化設(shè)計(jì)和后期跨平臺(tái)應(yīng)用的需求。

        3.1 Qt類(lèi)

        Qt包含了各種功能不同的模塊,每個(gè)模塊都有隸屬于自己的類(lèi)庫(kù)。其中常用的模塊有QtCore(核心模塊)、QtGui(GUI模塊)、QtNetwork(網(wǎng)絡(luò)模塊)、QtOpenGL(OpenGL 3D模塊)、QtScript(腳本模塊)、QtXml(文本模塊)和QtSql(Sql數(shù)據(jù)庫(kù)模塊)。在程序?qū)嶋H設(shè)計(jì)中,主要用到的類(lèi)包括QObject(Qt 對(duì)象模型的基類(lèi))、QApplication(界面程序控制和設(shè)置類(lèi))、QWidget和QDialog(組件容器類(lèi))、QMainWindow(中央窗口部件類(lèi))、QEvent(Qt事件響應(yīng)類(lèi)的基類(lèi))和QLayout(布局管理類(lèi))等[22]。Qt類(lèi)庫(kù)組織結(jié)構(gòu)合理,使用時(shí)需要按照各類(lèi)的集成關(guān)系進(jìn)行操作,本文所用到的Qt類(lèi)屬結(jié)構(gòu)如圖4所示。

        圖4 Qt類(lèi)結(jié)構(gòu)示意圖

        軟件主界面各個(gè)窗口都繼承自 QMainWindow類(lèi),主要功能是用于程序的運(yùn)行顯示,其上的組件分別包含 CentralWidget、 QToolBar、 QMenuBar等子類(lèi),分別對(duì)應(yīng)界面布局、菜單欄和工具欄等的顯示?;谝陨献宇?lèi)又可以派生出如 QMenu(菜單),QAction(動(dòng)作)、QGroupBox(組合框)和 QLabel(文本和圖的顯示)等子類(lèi),以實(shí)現(xiàn)子窗口中的特殊功能。

        3.2 信號(hào)與槽

        在軟件使用過(guò)程中,用戶(hù)界面最重要的功能就是處理人與軟件之間的信息傳遞及交互。其中,信號(hào)與槽作為Qt框架編程的基礎(chǔ),屬于一種觀察者模式,用來(lái)實(shí)現(xiàn)對(duì)象間的數(shù)據(jù)響應(yīng)和通信,操作簡(jiǎn)便靈活,從而可以大幅提高軟件的人機(jī)交互效率。程序調(diào)用形式如下:

        connect(sender,signal,receiver,slot)

        其中:sender是發(fā)送信號(hào)的對(duì)象;signal是發(fā)送對(duì)象發(fā)出的信號(hào);receiver是接收信號(hào)的對(duì)象;slot是接受對(duì)象在接收到信號(hào)之后需要執(zhí)行的功能函數(shù)。

        3.3 兼容OpenGL圖形框架

        在有限元軟件系統(tǒng)界面中,除了常規(guī)的界面交互功能,還需要提供圖形可視化等功能。OpenGL作為繪制三維圖形的標(biāo)準(zhǔn)API,在圖形可視化方面應(yīng)用廣泛。其中,QtOpenGL模塊依賴(lài)于OpenGL庫(kù),經(jīng)常被Qt應(yīng)用程序用來(lái)繪制3D圖形[23]。在具體實(shí)現(xiàn)中,需要對(duì)QtOpenGL的QGLWidget類(lèi)進(jìn)行子類(lèi)化,并且需要在QGLWidget中實(shí)現(xiàn)場(chǎng)景繪制虛函數(shù),如void initiallizeGL(),void resizeGL()和void paintGL()等,也可以直接調(diào)用OpenGL命令開(kāi)發(fā)窗口部件。

        3.4 界面語(yǔ)言國(guó)際化

        軟件界面語(yǔ)言的多樣化已成為評(píng)估軟件可用性的重要指標(biāo)。其中Qt全面使用Unicode,對(duì)國(guó)際化支持十分成熟。如圖5所示,Qt linguist(又稱(chēng)Qt語(yǔ)言家)是Qt的一個(gè)附加組件,很好地解決了Qt的國(guó)際化問(wèn)題,方便了程序界面語(yǔ)言的翻譯,具體實(shí)現(xiàn)在4.4小節(jié)有所描述。

        圖5 Qt linguist

        4 有限元軟件GUI程序?qū)崿F(xiàn)

        如圖6所示,本文介紹的有限元軟件界面實(shí)現(xiàn)流程圖表明,基于Qt的有限元軟件界面的應(yīng)用程序框架是自上向下的。以下重點(diǎn)描述幾個(gè)重要流程的具體實(shí)現(xiàn)過(guò)程。

        圖6 有限元軟件界面實(shí)現(xiàn)流程圖

        4.1 用戶(hù)界面主入口程序

        首先在主函數(shù)(main函數(shù))中生成QApplication類(lèi)的一個(gè)實(shí)例hjif_app,然后依照功能要求編輯主窗口類(lèi)MainWindow的實(shí)例hjf_mainWin。軟件用戶(hù)界面的主入口程序如下:

        int main(int argc, char*argv[])

        {

        QApplication hjf_app(argc, argv);

        //產(chǎn)生一個(gè)QApplication類(lèi)的實(shí)例hjf_app,

        //可以為開(kāi)發(fā)機(jī)構(gòu)和程序命名

        hjf_app.setOrganizationName("機(jī)構(gòu)名稱(chēng)");

        hjf_app.setApplicationName("軟件名稱(chēng)");

        //定義Mainwindow類(lèi)的對(duì)象hjf_mainWin,

        //Mainwindow類(lèi)以公有形式繼承QMainwindow類(lèi)

        MainWindow hjf_mainWin;

        hjf_mainWin.setMinimumWidth(960);

        //設(shè)置主窗口最小寬度

        hjf_mainWin.setMinimumHeight(600);

        //設(shè)置主窗口最小高度

        hjf_mainWin.showMaximized();

        //主窗口最大化

        int ret=hjf_app.exec();

        //顯示主窗口

        return ret;

        }

        4.2 用戶(hù)界面生成與管理

        如圖7所示,有限元軟件的用戶(hù)界面主要包括6部分:(1) 菜單和工具欄,包括模型/結(jié)果導(dǎo)入、導(dǎo)出等;(2) 視圖控制欄,具有6個(gè)視圖操作和常規(guī)鼠標(biāo)操作;(3) 模型樹(shù)/結(jié)果樹(shù),包含了有限元模型的幾何、網(wǎng)格、材料、屬性等信息的層次目錄;(4) 視圖區(qū),作為軟件界面中區(qū)域最大的部分,為用戶(hù)提供可視化窗口;(5) 功能窗口,主要作為各個(gè)功能模塊的數(shù)據(jù)輸入界面以及配置參數(shù)選項(xiàng)界面等;(6) 應(yīng)用窗口部件類(lèi),可單獨(dú)使用,也可以作為功能窗口的子部件被使用。

        圖7 有限元軟件界面組成部分

        其中主要功能窗口部件包含對(duì)話(huà)框(QDialog)、基礎(chǔ)窗口部件(QWidget)和其他特殊窗口部件。主界面的程序?qū)崿F(xiàn)如下:

        MainWindow::MainWindow(QWidget*parent):

        {

        //窗體、對(duì)話(huà)框初始化

        m_importThread=NULL;

        //模型導(dǎo)入進(jìn)程類(lèi)

        m_entityDlg=NULL;

        //元素創(chuàng)建窗體

        ……

        languageUpdate();

        //更新語(yǔ)言

        createMenus();

        //創(chuàng)建菜單

        createToolBars();

        //創(chuàng)建工具欄

        createStatusBar();

        //創(chuàng)建狀態(tài)欄

        createGuidTree();

        //創(chuàng)建向?qū)?shù):模型樹(shù)和結(jié)果樹(shù)

        iniMainLayout();

        //初始化界面布局

        showMaximized();

        //主窗口最大化

        //設(shè)置主窗口名稱(chēng)和圖標(biāo)

        setWindowTitle(tr("%1%2").arg(TITLE).arg(VER));

        setWindowIcon(QIcon(":/public/image/hajifui.png"));

        setupSolPath();

        //設(shè)置求解器路徑

        setupEnvironment();

        //設(shè)置環(huán)境變量

        }

        圖7中的5-功能窗口的程序?qū)崿F(xiàn)主要代碼如下:

        class LoadDlg:public QDialog

        {

        public:

        QLineEdit*m_txtLoadFilePath;

        //文本輸入框

        QRadioButton *m_rdbDisForce;

        //單選按鈕

        QLabel *m_lblOutFormat;

        //文本標(biāo)簽

        QComboBox *m_cmbOutLoadFormat;

        //復(fù)選按鈕

        ApplyEntityWgt *m_applyTargetEntity;

        //實(shí)體組合部件

        };

        可以看出,LoadDlg是自定義設(shè)計(jì)的類(lèi),繼承自QDialog,其包含的控件有文本標(biāo)簽、文本輸入框、單選/復(fù)選按鈕和應(yīng)用組合部件。另外,應(yīng)用組合部件類(lèi)ApplyEntityWgt也是自定義設(shè)計(jì)的類(lèi),繼承自QWidget,對(duì)應(yīng)的是圖7中所示的應(yīng)用窗口部件,程序?qū)崿F(xiàn)代碼如下:

        class ApplyEntityWgt:public QWidget

        {

        public:

        QPushButton*m_btnAddMember;

        //點(diǎn)擊按鈕

        QTextEdit *m_txtApplicationEntities;

        //文本框

        };

        4.3 界面布局管理

        按照總體布局,在主窗口進(jìn)行布局,并設(shè)置界面的主要通訊機(jī)制,程序代碼實(shí)現(xiàn)如下:

        void MainWindow::iniMainLayout()

        {

        //初始化可視化控件

        if (!m_glWidget)

        m_glWidget=new GlWidget(this);

        setCentralWidget(m_glWidget);

        //將視圖區(qū)至于主窗口中心

        //將向?qū)?shù)區(qū)置于主窗口靠左區(qū)域

        addDockWidget(Qt::LeftDockWidgetArea,m_wgtDockTree);

        //將結(jié)果樹(shù)控件至于主窗口靠左區(qū)域

        addDockWidget(Qt::LeftDockWidgetArea,m_resDockWgt);

        //將模型樹(shù)樹(shù)控件至于主窗口靠左區(qū)域

        addDockWidget(Qt::LeftDockWidgetArea,m_modelDockWgt);

        //將工具欄控件至于主窗口頂部區(qū)域

        addToolBar(Qt::TopToolBarArea,m_tlbFile);

        addToolBar(Qt::TopToolBarArea,m_resultToolBar);

        addToolBar(Qt::TopToolBarArea,m_tlbView);

        //將元素選擇工具欄至于主窗口右部區(qū)域

        addToolBar(Qt::RightToolBarArea,m_tlbSelect);

        //界面操作和視圖模塊的信號(hào)與槽信號(hào)關(guān)聯(lián)

        connect(m_glWidget,SIGNAL(nodePicked(SW_NODE*,int)),this,SLOT(onNodePicked(SW_NODE*,int)));

        connect(m_glWidget,SIGNAL(elementPicked(SW_ELCONN*,int)),this,SLOT(onElementPicked(SW_ELCONN*,int)));

        }

        4.4 用戶(hù)界面事件響應(yīng)

        有限元軟件的操作往往需要工程師的參與和大量的圖形交互操作完成,在此使用Qt的信號(hào)與槽機(jī)制來(lái)實(shí)現(xiàn)操作對(duì)象間的數(shù)據(jù)通信。圖8形象地描述了基于Qt的信號(hào)槽機(jī)制所創(chuàng)建的有限元軟件用戶(hù)界面事件響應(yīng)的基本流程。

        圖8 有限元軟件界面交互事件響應(yīng)流程

        在軟件界面交互操作中,鼠標(biāo)和鍵盤(pán)作為關(guān)聯(lián)用戶(hù)界面動(dòng)作和視圖響應(yīng)的最主要的輸入設(shè)備,響應(yīng)事件主要包括鼠標(biāo)移動(dòng)、右鍵單擊、右鍵雙擊、左鍵單擊、左鍵雙擊、左鍵按下、左鍵彈出等。在Qt中,這些鼠標(biāo)響應(yīng)事件統(tǒng)一對(duì)應(yīng)于QWidget中的虛擬方法[9],并且不同的鼠標(biāo)事件具有不同的輸入?yún)?shù)。捕獲鼠標(biāo)事件首先會(huì)覆蓋這些虛擬方法,以便鼠標(biāo)事件可以在不同組件上發(fā)生時(shí)調(diào)用相應(yīng)的事件。在實(shí)現(xiàn)代碼中,所有鼠標(biāo)雙擊事件都將調(diào)用mouseMoveEvent()函數(shù),必須通過(guò)輸入?yún)?shù)QMouseEvent * event(left,middle或right)的信息來(lái)區(qū)分。程序?qū)崿F(xiàn)的主要代碼如下:

        void GlWidget::mouseMoveEvent(QMouseEvent*event)

        {

        QPoint point=event->pos();

        Qt::MouseButtons buttons=event->buttons();

        if (buttons==Qt::LeftButton)

        { //處理左鍵單擊命令

        }

        else if (buttons==Qt::MidButton)

        { //處理中鍵單擊命令

        }

        else if (buttons==Qt::RightButton)

        { //處理右鍵單擊命令

        }

        else

        { //其他

        }

        }

        最后,實(shí)現(xiàn)軟件用戶(hù)界面的語(yǔ)言切換,需要執(zhí)行以下步驟:

        1) 使用tr()完成對(duì)用戶(hù)可見(jiàn)的文本信息的封裝;

        2) 構(gòu)建一種用戶(hù)可執(zhí)行語(yǔ)言切換的函數(shù)方法;

        3) 對(duì)于主界面中的所有窗口部件,重寫(xiě)系統(tǒng)響應(yīng)事件changeEvent。

        具體程序?qū)崿F(xiàn)中,首先要?jiǎng)?chuàng)建語(yǔ)言文件ts,然后通過(guò)Qt linguist進(jìn)行翻譯,接著編譯ts文件生成可直接調(diào)用加載的語(yǔ)言文件qm,最后應(yīng)用QTranslator類(lèi)加載生成的qm文件,以此來(lái)顯示程序所指定的語(yǔ)言類(lèi)型,主要程序如下:

        QTranslator translator;

        //提供對(duì)文本輸出的國(guó)際化支持

        translator.load(":/qm/main_widget_zh");

        //加載語(yǔ)言文件

        app.installTranslator(&translator);

        //整個(gè)程序加載翻譯文件

        若要實(shí)現(xiàn)多國(guó)語(yǔ)言實(shí)時(shí)切換,在調(diào)用installTranslator方法后,由于各窗體的狀態(tài)會(huì)發(fā)生變化,系統(tǒng)則會(huì)自動(dòng)給每個(gè)窗體發(fā)送信號(hào)并告知changeEvent槽event產(chǎn)生,因此要在切換語(yǔ)言的每個(gè)窗體中重寫(xiě)changeEvent事件,程序?qū)崿F(xiàn)如下:

        void MainWindow::changeEvent(QEvent*e)

        {

        QWidget::changeEvent(e);

        switch (e->type())

        {

        case QEvent::LanguageChange:

        retranslateUi(this);

        break;

        default:

        break;

        }

        5 可行性檢驗(yàn)

        通過(guò)將本文所開(kāi)發(fā)的面向用戶(hù)的具有友好操作性的專(zhuān)用有限元軟件用戶(hù)界面,與自主有限元計(jì)算系統(tǒng)HAJIF進(jìn)行數(shù)據(jù)關(guān)聯(lián),最終實(shí)現(xiàn)了軟件系統(tǒng)用戶(hù)界面與分析計(jì)算、前后處理及其各功能模塊的綜合集成,檢驗(yàn)了上述開(kāi)發(fā)方法的可行性。以下是基于本文方法所開(kāi)發(fā)的HAJIF系統(tǒng)的幾個(gè)典型功能的子界面。

        如圖9所示,通過(guò)實(shí)現(xiàn) HAJIF系統(tǒng)的優(yōu)化設(shè)計(jì)模塊的數(shù)據(jù)輸入界面,大幅提高了優(yōu)化設(shè)計(jì)變量的創(chuàng)建效率,精簡(jiǎn)了數(shù)據(jù)輸入量,改善了用戶(hù)操作體驗(yàn)。

        圖9 HAJIF系統(tǒng)優(yōu)化設(shè)計(jì)模塊的數(shù)據(jù)輸入界面

        圖10所示為HAJIF系統(tǒng)后處理功能模塊顯示界面。通過(guò)界面鼠標(biāo)點(diǎn)擊三維模型云圖上的感興趣的節(jié)點(diǎn)或者單元,就可以實(shí)現(xiàn)以對(duì)話(huà)框和標(biāo)識(shí)的形式進(jìn)行數(shù)據(jù)展示,從而完成了有限元分析過(guò)程可視化,提高了工程人員在有限元分析過(guò)程中的參與感。

        圖10 HAJIF系統(tǒng)后處理模塊數(shù)據(jù)顯示及查詢(xún)界面

        6 結(jié) 語(yǔ)

        在有限元軟件系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)中,不僅需要滿(mǎn)足系統(tǒng)的基本分析功能,更應(yīng)注重系統(tǒng)的使用功能,即系統(tǒng)必須為用戶(hù)提供直觀、便捷、友好、靈活的用戶(hù)圖形界面,能夠滿(mǎn)足專(zhuān)用模塊的綜合集成和個(gè)性化定制開(kāi)發(fā)需求。本文通過(guò)梳理有限元軟件的界面框架,結(jié)合有限元分析流程,采用MDI的設(shè)計(jì)方式,引入Qt圖形開(kāi)發(fā)框架,開(kāi)發(fā)出了一種基于Qt的專(zhuān)用有限元軟件GUI模塊。該模塊是針對(duì)航空結(jié)構(gòu)強(qiáng)度分析與優(yōu)化設(shè)計(jì)軟件系統(tǒng)HAJIF設(shè)計(jì)開(kāi)發(fā)的,但同時(shí)也形成了有限元軟件GUI模塊高效的設(shè)計(jì)開(kāi)發(fā)方法,除了應(yīng)用于HAJIF系統(tǒng),還在一些其他有限元軟件中得以應(yīng)用,從而表明了該GUI模塊不僅具備了較高的友好交互性,還極大滿(mǎn)足了有限元軟件系統(tǒng)高效開(kāi)發(fā)的集成需求。同時(shí)由于Qt組件開(kāi)發(fā)的跨平臺(tái)特性,符合大型有限元軟件系統(tǒng)多平臺(tái)的開(kāi)發(fā)要求,也為專(zhuān)用有限元軟件系統(tǒng)集成和定制開(kāi)發(fā)提供了一條可借鑒的途徑。

        猜你喜歡
        用戶(hù)界面界面有限元
        自然用戶(hù)界面在智能家居系統(tǒng)中的應(yīng)用路徑創(chuàng)新研究:生成式人工智能技術(shù)的調(diào)節(jié)作用
        包裝工程(2023年16期)2023-08-25 11:40:58
        基于CiteSpace的國(guó)外用戶(hù)界面體驗(yàn)圖譜量化分析
        國(guó)企黨委前置研究的“四個(gè)界面”
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開(kāi)發(fā)方法研究
        UI用戶(hù)界面色彩設(shè)計(jì)研究
        流行色(2017年12期)2017-10-26 03:08:44
        人機(jī)交互界面發(fā)展趨勢(shì)研究
        手機(jī)界面中圖形符號(hào)的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        基于B/S的跨平臺(tái)用戶(hù)界面可配置算法研究
        磨削淬硬殘余應(yīng)力的有限元分析
        基于SolidWorks的吸嘴支撐臂有限元分析
        欧美午夜理伦三级在线观看| 亚洲性色ai无码| 亚洲中文字幕高清在线视频一区 | 久青草久青草视频在线观看| 国产精品青草视频免费播放 | 亚洲 都市 校园 激情 另类| 东京热加勒比日韩精品| 日本免费久久高清视频| 国产精品精品自在线拍| 四虎成人精品无码永久在线| 久久无码中文字幕东京热| av在线天堂国产一区| 亚洲av成人精品日韩在线播放| 99久久久无码国产精品9| 精品人妻一区二区三区蜜桃| 日韩一区二区三区人妻免费观看| 亚洲乱码日产精品一二三| 亚洲AV色无码乱码在线观看| 日韩最新av一区二区| 国内嫩模自拍诱惑免费视频| 国产精品欧美一区二区三区不卡| 亚洲日韩图片专区小说专区| 久久精品国产亚洲不卡| 国产欧美日韩中文久久| 四虎影库久免费视频| 欧美人与动牲交片免费| 亚洲精品久久视频网站| 国产精品欧美一区二区三区| 国内精品伊人久久久久av| 久久中文字幕av一区二区不卡| 国产精品久久久久一区二区三区 | 在线观看国产三级av| 精品亚洲一区二区三洲| 女人被爽到高潮视频免费国产 | 亚洲人成网站18禁止| 猫咪免费人成网站在线观看| 久久99老妇伦国产熟女高清| 国产一区二区三区av免费| 国产绳艺sm调教室论坛| 久久精品国产亚洲黑森林| av高潮一区二区三区|