当前位置:首页 >> 能源/化工 >>

C


软件技术

袁  媛等 :C + + 类库 Qt 在数值模拟软件开发中的应用

C + + 类库 Qt 在数值模拟软件开发中的应用
袁   ,王延红 ,江   ,蒋   媛 凌 阳
( 西北核技术研究所   陕西 西安   710024)

摘   : 介绍调用 C + + 类库 Qt 进行数值模拟软件开发的方法 。首先介绍 Qt 及其图形库 Qwt ; 其次对脉冲束辐照材料 要 热力学效应软件 GU I 的设计做了详细说明 ,并给出数据文件的输入 、 输出方法 ; 最后根据计算结果调用 Qwt 库显示出处理 需要的图形 。基于 Qt 的软件开发表明 :Qt 在数值计算软件开发中具有很强的优势 ,适合作为数值计算软件 GU I 开发的工 作平台 。 关键词 :Qt ; 数值模拟软件 ;C + + ; GU I ;Qwt 中图分类号 : TP3911 9       文献标识码 :B       文章编号 :10042373X(2010) 022080204
YUAN Yuan ,WAN G Yanhong ,J IAN G Ling ,J IAN G Yang
(No rt hwest Instit ute of Nuclear Technology ,Xi′ ,710024 ,China) an

Application of Qt in Exploitation of Numerical Simulation Sof t ware

Abstract : The exploitatio n met hod of numerical analog software based on C + + class libraries Qt is int roduced. Firstly ,Qt and it s grap hic libraries Qwt are p resented. Secondly ,t he design of GU I of t he imp ulse radiant material t hermodynamics effect software is explained in detail. Thirdly ,t he inp ut and outp ut means of t he data files are given. Finally ,t he visualization grap hics p roduced by Qwt libraries is shown. During t he exploitation of t he software ,it can be co ncluded t hat Qt has mo re advantages in t he develop ment of numerical analog software. So it is suitable to be t he develop ment platfo rm of numerical analog software. Keywords :Qt ;numerical analog software ;C + + ; GU I ;Qwt

0    引 言

1  Qt 类库简介

国内目前主流的 GU I 库是 Visual C + + 自带的微软 基础类库 ( M FC) ,由于微软的商业考虑使得 M FC 缺乏 平台无关性 ,致使 M FC 无法适用于跨平台软件系统的 开发 。而开源的 Troll Tech Qt 类库则具有极强的平台 无关性和优良的面向对象特性 ,在跨平台软件系统的开 发中具有绝对优势 。 Qt 是一个交叉开发平台 , 从某种意义上说 ,Qt 类 库是为几种不同的操作系统设计的 。Qt 所有平台的 A PI 是一致的 , 这就意味着在一种平台上编写的应用 程序 ,在新的平台上经过重新编译和连接便能运行 。因 此 ,软件开发者只需通过开发和维护一种平台的应用源 码 ,便可开发出适用于多种平台的软件 [ 1 ] 。 这里简要介绍 Qt 类库及其信号和槽的机制 , 结合 脉冲束辐照材料热力学效应 GU I 开发阐述了 Qt 类库 在数值模拟软件开发中的优势 ,为探索一条行之有效的 跨平台数值模拟软件开发途径打下基础 。

1. 1   类库简介 Qt C
+ +

Qt 是挪威 Troll Tech 公司推出的一个跨平台的

80

收稿日期 :2009209218

图形用户界面库 ,包括 Qt ,基于 Framebuffer 的 Qt Embedded ,快速开发工具 Qt Designer , 国际化工具 Qt Linguist 等部分 。Qt 类似于 Window 上的 Motif ,Ope2 nwin , GT K 等图形界面库及 Windows 平台上的 M FC , O WL ,VCL ,A TL 等 [ 2 ] 。Qt 还具有下列优点 : ( 1) 优良的跨平台特性 。Qt 支持下列操作系统 : Micro sof t Window s 95/ 98 , Micro sof t Windows N T , Linux ,Solaris ,SunOS , H P2U X ,Digital UN IX ( OSF/ 1 , Tru64 ) , Irix , FreeBSD , BSD/ OS , SCO , A IX , OS390 , QN X 等 [ 3 ] 。 ( 2) 面向对象 。Qt 良好的封装机制使得其模块化 程度非常高 ,可重用性较好 ,便于用户的开发 。Qt 提供 了一种称为 signal s/ slot s 的安全类型来替代回调 call2 back ,这 使 得 各 个 元 件 之 间 的 协 同 工 作 变 得 十 分 简单 [ 4 ] 。 ( 3) 丰富的 A PI 。Qt 包括多达 250 个以上的 C + + 类 , 还 提 供 基 于 模 板 的 collectio ns , serializatio n , file ,

《现代电子技术》 2010 年第 2 期总第 313 期
I/ O device , directory management , date/ time 类 , 甚至

  计算机应用技术 使用 Qwt 库绘制的收音机的调节按钮 、 表盘和仪 器指针以及二维和三维图形如图 1 和图 2 所示 ,这些图 形完全能够满足本软件数值计算结果的图形处理需求 。

还包括正则表达式的处理功能 。 ( 4 ) 支 持 2D/ 3D 图 形 渲 染 , 支 持 Open GL 及 XML [ 5 ] 。 ( 5) 具有大量的开发文档 。 1. 2   信号和槽的机制 Qt 在图形用户界面编程中 ,程序员经常希望一个窗口 部件的变化被通知给另一个窗口部件 。更一般地 ,希望 任何一类的对象可以和其他对象进行通信 。较老的工 具包使用一种被称作回调的通信方式来达到这一目的 。 回调是指一个函数指针 ,如果希望一个处理函数通知你 一些事件 ,可以把另一个函数 ( 回调) 的指针传递给处理 函数 ,处理函数在适当时调用回调[ 6 ] 。回调有两个主要 缺点 ,首先它们不是类型安全的 , 编译系统不能确定处 理函数使用了正确的参数来调用回调 ; 其次 , 回调和处 理函数是非常强有力地联系在一起的 ,因为处理函数必 须知道要调用哪个回调 [ 7 ] 。 在 Qt 中使用一种可以替代回调的技术即信号和 槽 。信号和槽机制是 Qt 的一个主要特征 ,并且也是它 与其他工具包最不相同的部分 。Qt 的窗口部件有很多 预定义的信号 ,也可以通过继承来加入自己的信号 , 当 一个特定事件发生时 ,一个信号即被发射 。槽则是一个 可以被调用处理特定信号的函数 ,Qt 的窗口部件有很 多预定义的槽 ,但是通常的习惯是加入自己的槽 , 这样 就可以处理自己感兴趣的信号 ,通过信号和槽的连接实 现对象间的通信 。信号和槽的机制是类型安全的 : 一个 信号的签名必须与它的接收槽的签名相匹配 。因为签 名是一致的 ,编译器就可以帮助检测类型是否匹配 。信 号和槽是宽松地联系在一起的 ,一个发射信号的类不需 要知道也不需要注意哪个槽要接收这个信号 。Qt 信号 和槽的机制可以保证 ,如果把一个信号和一个槽连接起 来 ,槽就会在正确的时间使用信号的参数而被调用 , 信 号和槽可以使用任何数量 、 任何类型的参数 , 它们是类 型安全的 ,不会再有回调核心转储 ( Core Dump ) [ 8 ] 。 1. 3   Qwt 图形库简介 Qwt 类库是对 Qt 图形库的一种有益的扩展 ,主要是 为开发科学领域方面的软件提供实用的组件库。Qwt 包 括各种 2D 图形显示组件及配套的控件 ,如刻度 、 旋转体 、 罗盘、 滑尺以及用于相应曲线显示的数据类等。Qwt 属 于 SourceForge 下的一个类库项目 ,能够使用在各种平台 下 ,包括 32 b MSWindows ( 95/ 98/ N T/ 2000/ XP) , POS2 IX OS (Linux/ BSD/ Unix2like OSes) ,OSX 等。它的发布 基于 Qwt License ( Version 1. 0) 协议 ,软件开发人员可以 在遵守相应条例的基础上 ,自由地使用它进行软件系统 的开发[ 9 ] 。

图1  利用 Qwt 库绘制出的收音机调节 按钮 、 表盘 、 指南针等仪器指针

图2  利用 Qwt 库绘制出的二维及三维图

2  脉冲束辐照材料响应数值模拟软件 GUI 设计 2. 1   软件跨平台设计

为满足不同用户操作系统的要求 ,同时为加快开发 速度 、 缩短开发周期、 减少重复劳动 ,使得相同的程序代 码能够在不同操作系统下编译 ,脉冲束辐照材料响应软 件的开发需进行跨平台设计。计算核心代码采用标准 Fortran 90 语言编写 ,可以满足跨平台需求。程序代码采 用 C + + 语言编写 ,软件菜单 、 参数输入界面与后处理图形 输出需要调用大量类库才能实现 ,采用跨平台 C + + 类库 Qt 是一种非常合适的选择 ,基于 Qt 的图形库 Qwt 则为 软件后处理图形输出提供了强有力的支持 。 通过跨平台 C + + 类库 Qt 和基于 Qt 的图形库 Qwt 设计的软件前后处理 GU I , 结合 Fo rt ran 90 编写的求 解器核心代码 ,可以轻松实现 “一次编写 , 随处编译” 的 软件跨平台设计理念 ,从而使得软件能够在不同操作系 统下编译生成相应的版本 ,实现软件的跨平台运行 。
2. 2  GU I 总体框架设计

脉冲束辐照材料响应软件的求解器包括多种求解 程序 ,软件 GU I 设计需要把这些独立的求解程序纳入 到一个综合 GU I 下 。为了使 GU I 适合多种求解核心 , 该 GU I 采用分层设计 ,把通用菜单放到最外层 ,后级菜 单逐步根据不同的求解核心细化 ,最终具体到适合各种 求解核心的参数输入 GU I 。这种设计吸取了多种商业 软件 GU I 的优点 , 方便了用户使用 , 同时还具有易学 、 清晰 、 、 简洁 通用性强等特点 ,可扩展为多种求解核心的 前后处理 GU I 。
81

软件技术
2. 2. 1   主界面

袁  媛等 :C + + 类库 Qt 在数值模拟软件开发中的应用 串 ; 接下来使用 Qt Linguist 翻译应用程序 ; 再运行 lre2 使用 Qt ranslator 加载这个翻译文件 。这样 , 当程序运 行时 ,就显示了翻译后的文字 [ 4 ] 。
图4  元素选择对话框

根据用户需求 ,将主界面划分为动态菜单区 、 静态 菜单区 、 图形显示区 、 对话区和状态区五个主要部分 。 动态菜单区根据用户选择可动态产生下级菜单 。静态 菜单区为固定的若干控制按钮 ,主要控制图形的显示方 式 。图形显示区用在后处理中 ,根据计算结果显示相应 的图形 。对话区显示程序提示 、 警告信息和相关信息 , 用户还可在此输入数据或命令 。状态区显示了当前正 在执行的操作或状态 , 如前处理输入数据阶段 、 求解器 计算阶段或后处理绘图阶段等 。
2. 2. 2   材料属性输入对话框

lease 生成二进制的 . qm 文件 ; 最后在应用程序开始时

由于数值计算关系到若干材料 ,因此设计了材料属 性参数设置对话框 ,如图 3 所示 。

2. 4   数据文件的输入与输出

本软件的一个要求就是由界面输入参数 ,并按照求 解器输入文件格式要求生成一个数据文件 ,供求解器计 算调用 。其中需要用到文件的读、 写技术。写文件 ,即把 用户输入到界面中的参数数据按要求存入文件中 ; 读文 件 ,即从磁盘上的文件中读数据 ,并显示到指定控件中。 读文件时 , 先打开文件 , 通常以 IO ReadOnly “只 读” 式 打 开 文 件 , 再 定 义 一 个 Qtext St ream 类 的 方 st ream 对象 ,然后调用 read () 函数从文件中读数据 , 最 后将取得的数据赋给相应的控件进行显示 ,如 :
line Edit1 - > set Text ( st ream. read () ) ;

图3  材料属性参数设置对话框

它分为控制按钮区 、 状态方程类型选择区 、 参数输 入区和元素百分含量显示区等几个主要部分 。控制按 钮区包含若干功能按钮 ,元素百分含量显示区包括组成 该材料的各个元素的元素序号 、 符号和百分含量值 。新 建和修改材料时 ,元素百分含量显示区左侧的 “元素选 择” 按钮可用 ,点击后弹出如图 4 所示的元素选择对话 框 。该对话框的上半部分为元素周期表 ,点击元素所在 的相应区域就会弹出对话框 ,提示用户输入当前元素的 百分含量 ,输入完成后 , 此元素及其百分含量值就会出 现在元素含 量 列 表 区 , 同 时 动 态 地 计 算 总 的 百 分 含 量值 。 2. 3  GU I 的中文化 Qt 包含有很多工具和函数 , 它们使程序国际化工 作即语言翻译 、 字符编码 、 输入技术和显示转换等变得 简单 。利用 Qt 软件的国际化功能 , 该软件具备中 、 英 文两种显示界面 。主要实现步骤如下 : 首先使用 Q St ring 处理所有用户可见文本并接受 t r () 的检查 , 因为 Q St ring 内部使用 U nicode 编码 , 所 以 Q St ring 能够处理世界上的所有语言 ; 再运行 lup 2 date 从应用程序的源代码中提取所有的用户可视字符
82

为将文件中的所有数据赋给编辑框 1 。 写文件时 ,通常以 file. open ( IO WriteOnly)“写” 方式打开文件 。该方式会将文件中原来所有的数据覆 盖 ,若不想删除原有数据 ,而是在文件中增加数据 ,则还 需使用 IO Append 方式打开文件 , 即 file. open ( IO WriteOnly | IO Append ) 。之 后 定 义 一 个 Qtext 2 St ream 类的 st ream 对象 ,再向 st ream 中写入数据 ,如 :
stream < < line Edit1 - > text () ;

即为将编辑框 1 中的数据写入文件 。

执行 “提交运算” 命令后产生的指定格式的数据文

件如图 5 所示 ,求解器根据此文件即可进行运算 。
2. 5   图形绘制功能

软件后处理要求根据用户需求在计算过程中或计

算结束后输出所关注的物理量的相应图形 , 以迅速 、 直 观地查看计算结果 , 必要时给出动画显示 。通过调用 中 ,从而完成计算结果的后处理图形显示 。根据计算结

Qwt 库 , 可实现画图功能并嵌入到软件前后处理 GU I

《现代电子技术》 2010 年第 2 期总第 313 期 果画出的曲线图和光谱图如图 6 ,图 7 所示 。

  计算机应用技术

3    结 语 Qt 是一个通用的跨平台 C + + 类库 , 为跨平台软件

的开发提供了极佳的工作平台 。基于 Qt 的开源图形 库 Qwt 为软件后处理提供了极大便利 。Qt 在脉冲束 辐照材料热力学效应软件 GU I 开发中的应用表明 : Qt 在数值计算软件开发中具有很强的优势 ,加快了开发速 度 ; 缩短了开发周期 ; 减少了重复劳动 。其程序代码无 需修改或做较少改动便能够在不同的操作系统下顺利 编译 , 非常适合作为数值计算软件 GU I 开发的工作 平台 。
参      考 文 献
[ 1 ] 祁献鹏 . 基于嵌入式 Qt 的中文 GU I 平台的设计 [ D ] . 郑州 :

图5  由本输入界面产生的数据文件

解放军信息工程大学 ,2002.
[ 2 ] 李铭 . 三维数据场可视化平台及其关键技术研究 [ D ] . 哈尔

滨 : 哈尔滨工程大学 ,2005.
[ 3 ] 聂爱菁 ,王心丰 ,崔赛华 . 在 Linux 下用 Qt 开发新一代 D TS

图形数据系 统的分 析与 设计 [J ] . 国 外 电 子 元 器 件 , 2004
[ 4 ] 王爱文 . Linux 平台下基于 Qt 的电子海图的研究与实现 [D ] . 哈尔滨 : 哈尔滨工程大学 ,2004. (5) :12215.

图6  曲线图

[ 5 ] 张方辉 , 王建群 . Qt/ Embedded 在嵌入式 Linux 上的移植 [ 6 ] 许德新 ,谈振藩 ,高延滨 . 基于 Qt 组件库应用程序的生成及 [J ] . 计算机技术与发展 ,2006 ,16 ( 7) :64266.

[ 7 ] 邓飞 . 基于 Qt 的地震资料采集质量监控及评价系统的开发

[ 8 ] 宋智宁 ,姚维 . 基于 Qte 通信机制的 GU I 系统 [J ] . 机电工 [ 9 ] 杨少鹏 . SXD/ Linux 通信编码仿真平台的设计与实现 [ D ] .

[ 10 ] [ 加 ] 布兰切尼 . C + + GU I Qt 3 编程 [ M ] . 齐亮 ,译 . 北京 : 北

[ 11 ] 于晓 ,王家礼 ,宋营坤 ,等 . 基于 Qt/ Embedded 的微波信号

图7  光谱图

作者简介       ,1979 年出生 ,河南郑州人 ,工程师 。主要研究方向为软件开发和虚拟仿真 。 袁 媛 女

王延红   ,1972 年出生 ,河南淮阳人 ,硕士研究生 ,工程师 。主要研究方向为软件开发和科学计算可视化 。 女 江     ,1981 年出生 ,安徽桐城人 ,硕士研究生 ,助理工程师 。主要研究方向为软件开发和数据库开发 。 凌 女 蒋     ,1982 年出生 ,湖北武汉人 ,助理工程师 。主要研究方向为软件开发和计算机网络技术 。 阳 男

( 《现代电子技术》半月刊)   欢迎订阅   - 85393376 029

其跨平台实现 [J ] . 东北农业大学学报 ,2006 ,37 (3) :3732
376.

与研究 [ D ] . 成都 : 成都理工大学 ,2004. 程 ,2007 ,24 ( 3) :77280.

成都 : 西南交通大学 ,2005.

京航空航天大学出版社 ,2006.

发生器软件设计 [J ] . 现代电子技术 ,2007 ,30 (13) :123.

83


相关文章:
c语言中数学函数
C 语言中之数学函数 C 语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入: #include <math.h> 编译时,必须加上参数「-lm」(表示连结至数学函...
最速下降法 C语言
最速下降法 C语言_数学_自然科学_专业资料。1.最速下降法 #include "stdio.h" #include "math.h" double fun1(double x1,double x2) /*定义函数 fun1 ...
山科大 C语言程序设计编程精选44例
山科大 C语言程序设计编程精选44例_计算机软件及应用_IT/计算机_专业资料。问题 1: 三个数比较大小 题目描述从键盘上输入 0~100 之间的三个数,按从小到大的...
C语言符号、指令表
C 语言符号控制命令表 C 语言符号控制命令表编译指令编译指令 #include #define #undef #asm 和 #endasm #ifdef、 #ifndef、 #else、 #endif 包含另一个文件...
C语言程序设计答案 曹计昌
(%4d)= -1 3.4 ⑴%c;⑵%c;⑶%f;⑷%f;⑸%lu;⑹%d;⑺%d;⑻%d;⑼%f;⑽%Lf 3.5 ⑴错误,运行提示为 divide error ⑵正确,结果为 b ⑶正确,结果为 ...
C语言经典算法100例
2.程序源代码: #include "stdio.h" main() { char a=176,b=219; printf("%c%c%c%c%c\n",b,a,a,a,b); printf("%c%c%c%c%c\n",a,b,a...
TN-C系统、TN-S系统、TN-C-S系统、TT系统的区别
TN-C 系统、TN-S 系统、TN-C-S 系统、TT 系统的区别:5/6/2010 10:22:14 AM 建筑工程供电使用的基本供电系统有三相三线制三相四线制等,但这些名词术语内...
潘通色卡号_图文
潘通色卡号(PANTONE 国际色卡 C 面效果) yellow C 黄色 C Purple C 红紫 C Process Yellow C 四色黄 C Hexa chrome Yellow C He 潘通色卡号(PANTONE 国际...
C-TRAT 执行标准
海关商贸反恐怖计划(C-TPAT)执行标准 一、集装箱保安(Container Security) 集装箱保安(Container 集装箱保安 1、 总则 总则:工厂必须有完整的集装箱使用管理程序...
面试中常见的C语言问题
5 结构体与联合的内存 typedef union { long i; int k[5]; char c; } DATE; struct data { int DATE cat; cow; double dog; }too; DATE max; 很...
更多相关标签: